【发布时间】:2016-01-15 09:56:41
【问题描述】:
我今天才开始使用 Go,所以这可能很明显,但我在上面找不到任何东西。
var x uint64 = 0x12345678; y := string(x) 给y 带来了什么?
我知道var x uint8 = 65; y := string(x) 会给y 字节65,字符A,并且常识会建议(因为允许将大于uint8 的类型转换为字符串)它们将被简单地打包到本地字节顺序(即小端)并分配给变量。
好像不是这样的:
hex.EncodeToString([]byte(y)) ==> "efbfbd"
首先想到的是,这是一个最后一个字节被遗漏的地址,因为一些奇怪的空终止符,但是如果我分配两个具有两个不同值的 x 和 y 变量并将它们打印出来,我会得到相同的结果结果。
var x, x2 uint64 = 0x10000000, 0x20000000
y, y2 := string(x), string(x2)
fmt.Println(hex.EncodeToString([]byte(y))) // "efbfbd"
fmt.Println(hex.EncodeToString([]byte(y2))) // "efbfbd"
令人发指的是,我在任何地方都找不到字符串类型的实现,尽管我可能还不够努力。
【问题讨论】:
标签: string go type-conversion