i := 123
s := string(i)
s是E,但我想要的是123
请告诉我怎样才能得到“123”。
在Java中,我可以这样做:
String s = "ab" + "c" // s is "abc"
我如何在围棋中连接两个字符串?
i := 123
s := string(i)
s是E,但我想要的是123
请告诉我怎样才能得到“123”。
在Java中,我可以这样做:
String s = "ab" + "c" // s is "abc"
我如何在围棋中连接两个字符串?
当前回答
在本例中,包括strconv和fmt。Sprintf做同样的工作,但使用strconv包的Itoa函数是最好的选择,因为fmt。Sprintf在转换期间再分配一个对象。
在这里查看基准测试:https://gist.github.com/evalphobia/caee1602969a640a4530
例如,参见https://play.golang.org/p/hlaz_rMa0D。
其他回答
使用strconv包的Itoa函数。
例如:
package main
import (
"strconv"
"fmt"
)
func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}
你可以简单地通过+ +来连接字符串,或者使用字符串包的Join函数。
fmt.Sprintf("%v",value);
如果您知道值的特定类型,则使用相应的格式化程序,例如int使用%d
更多信息- fmt
您可以使用fmt。Sprintf或strconv。FormatFloat
例如
package main
import (
"fmt"
)
func main() {
val := 14.7
s := fmt.Sprintf("%f", val)
fmt.Println(s)
}
好吧,大部分都给你展示了一些好的东西。 让我告诉你:
// ToString Change arg to string
func ToString(arg interface{}, timeFormat ...string) string {
if len(timeFormat) > 1 {
log.SetFlags(log.Llongfile | log.LstdFlags)
log.Println(errors.New(fmt.Sprintf("timeFormat's length should be one")))
}
var tmp = reflect.Indirect(reflect.ValueOf(arg)).Interface()
switch v := tmp.(type) {
case int:
return strconv.Itoa(v)
case int8:
return strconv.FormatInt(int64(v), 10)
case int16:
return strconv.FormatInt(int64(v), 10)
case int32:
return strconv.FormatInt(int64(v), 10)
case int64:
return strconv.FormatInt(v, 10)
case string:
return v
case float32:
return strconv.FormatFloat(float64(v), 'f', -1, 32)
case float64:
return strconv.FormatFloat(v, 'f', -1, 64)
case time.Time:
if len(timeFormat) == 1 {
return v.Format(timeFormat[0])
}
return v.Format("2006-01-02 15:04:05")
case jsoncrack.Time:
if len(timeFormat) == 1 {
return v.Time().Format(timeFormat[0])
}
return v.Time().Format("2006-01-02 15:04:05")
case fmt.Stringer:
return v.String()
case reflect.Value:
return ToString(v.Interface(), timeFormat...)
default:
return ""
}
}
另一个选择:
package main
import "fmt"
func main() {
n := 123
s := fmt.Sprint(n)
fmt.Println(s == "123")
}
https://golang.org/pkg/fmt#Sprint