如何在 Go 中将 int 值转换为 string?

i := 123
s := string(i)

S 是“ E”但我想要的是“123”

请告诉我怎样才能得到“123”。

在 Java 中,我可以这样做:

String s = "ab" + "c"  // s is "abc"

如何在围棋中使用 concat两个字符串?

616457 次浏览

使用strconv包的Itoa函数。

例如:

package main


import (
"strconv"
"fmt"
)


func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}

您可以简单地通过+'ing或使用strings包的Join函数来处理字符串。

您可以使用fmt. Sprintf启动strconv. formatFloat格式的错误

例如

package main


import (
"fmt"
)


func main() {
val := 14.7
s := fmt.Sprintf("%f", val)
fmt.Println(s)
}
fmt.Sprintf("%v",value);

如果您知道值的具体类型,请使用相应的格式化程序,例如%d forint

更多信息-fmt

有趣的是,strconv.Itoa速记

func FormatInt(i int64, base int) string

以10为基数

例如:

strconv.Itoa(123)

相当于

strconv.FormatInt(int64(123), 10)

fmt.Sprintfstrconv.Itoastrconv.FormatInt将完成这项工作。但是Sprintf将使用包reflect,它将再分配一个对象,所以这不是一个有效的选择。

在此处输入图片描述

在这种情况下,strconvfmt.Sprintf都做相同的工作,但使用strconv包的Itoa函数是最佳选择,因为fmt.Sprintf在转换期间分配了一个对象。

检查两者的nenchmark结果 在此处查看基准:https://gist.github.com/evalphobia/caee1602969a640a4530

例如,请参阅https://play.golang.org/p/hlaz_rMa0D

转换int64

n := int64(32)
str := strconv.FormatInt(n, 10)


fmt.Println(str)
// Prints "32"
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)
}

他们中的大多数人都表现得很好。 让我给你这个:

// 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