【发布时间】:2014-01-25 22:57:21
【问题描述】:
在将字节切片转换为字符串时,Golang 是否进行任何转换或以某种方式尝试解释字节?我刚刚尝试了一个包含空字节的字节切片,它看起来仍然保持字符串原样。
var test []byte
test = append(test, 'a')
test = append(test, 'b')
test = append(test, 0)
test = append(test, 'd')
fmt.Println(test[2] == 0) // OK
但是,带有无效 unicode 点或 UTF-8 编码的字符串呢?会不会投射失败或数据损坏?
【问题讨论】:
-
正如回答者所说,Go 不会转换任何东西。 (Rob Pike explaining Go strings 可能会或可能不会为您阐明这个问题,但阅读它只会是一件好事。)
string[]byte转换 do 复制原始字节,但是,因为strings 是不可变的,而[]bytes 不是。因此,例如,取出不需要的转换可以减少垃圾。
标签: string casting go byte slice