我:= 123s:= string(i)
s是’E’,但我想要的是“123”
请告诉我如何获得“123”。
在Java中,我可以这样做:
String s =“ab”+“c”// s是“abc”
我该如何连接两个字符串 走 </跨度> ? …
您可以使用 fmt.Sprintf
看到 http://play.golang.org/p/bXb1vjYbyc 例如。
在这种情况下两者 strconv 和 fmt.Sprintf 做同样的工作,但使用 strconv 包的 Itoa 功能是最好的选择,因为 fmt.Sprintf 在转换期间再分配一个对象。
strconv
fmt.Sprintf
Itoa
在这里检查基准: https://gist.github.com/evalphobia/caee1602969a640a4530
看到 https://play.golang.org/p/hlaz_rMa0D 例如。
fmt.Sprintf , strconv.Itoa 和 strconv.FormatInt 会做的。但 Sprintf 将使用该包 reflect ,它会再分配一个对象,所以这不是一个好的选择。
strconv.Itoa
strconv.FormatInt
Sprintf
reflect
fmt.Sprintf("%v",value);
如果您知道特定类型的值,请使用相应的格式化程序 %d 对于 int
%d
int
更多信息 - FMT
package main import ( "fmt" "strconv" ) func main(){ //First question: how to get int string? intValue := 123 // keeping it in separate variable : strValue := strconv.Itoa(intValue) fmt.Println(strValue) //Second question: how to concat two strings? firstStr := "ab" secondStr := "c" s := firstStr + secondStr fmt.Println(s) }
值得注意的是 strconv.Itoa 是 速记 对于
func FormatInt(i int64, base int) string
基地10
例如:
strconv.Itoa(123)
相当于
strconv.FormatInt(int64(123), 10)
转换 int64 :
int64
n := int64(32) str := strconv.FormatInt(n, 10) fmt.Println(str) // Prints "32"
好吧,他们中的大多数都向你展示了一些好的东西 我们给你这个:
// 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 "" } }