通过强制转换并使用连接运算符将整数附加到字符串
问题描述:
我想通过casting
连接一个整数与现有字符串,并使用+
附加连接。但它不起作用。通过强制转换并使用连接运算符将整数附加到字符串
package main
import (
"fmt"
)
func main() {
a := 4
b := "The value of a is "
fmt.Println(b + string(a))
}
这会在go playground上打印一个垃圾字符,在Unix终端上不会显示任何内容。这可能是什么原因?这种方法有什么不正确?
答
一个符号或无符号的整数值转换为字符串类型产生含有整数的UTF-8表示的字符串。
为了达到预期的效果,您需要使用一种方法来你的INT转换为字符串像strconv.Itoa
:
package main
import (
"fmt"
"strconv"
)
func main() {
a := 4
b := "The value of a is "
fmt.Println(b + strconv.Itoa(a))
}
+0
为什么它是这样吗? –
+1
这就是语言的定义。 –
答
使用fmt.Sprintf
或Printf
;不需要铸造:
fmt.Sprintf("%s%d",s,i)
它不打印“垃圾字符”;它使用Unicode代码点4打印一个字符。 –
小技术点:请注意,Go不会执行投射,只会进行类型转换。 – Flimzy
的可能的复制[如何诠释到字符串蒙上工作去?](https://stackoverflow.com/questions/34808465/how-do-int-to-string-casts-work-in-go/34808496 #34808496) – icza