在
go
中,字符串只是[]byte
在低级别,对吧?
但是字符串是只读的,当转换为
[]byte
时,我可以修改[]byte
,然后它们有不同的bytes.
我的问题是:
string
转换为 []byte
时,[]byte
是否获得数据副本,而不是重复使用字符串?[]byte
就变得不一样了(通过
testify
)
代码:
func TestConvertToBytes(t *testing.T) {
s := "k4"
bs := []byte(s)
fmt.Printf("%v, %v\n", bs, s)
bs[0] = 'q'
fmt.Printf("%v, %v\n", bs, s)
assert.NotEqual(t, s[0], bs[0])
}
结果:
=== RUN TestConvertToBytes
[107 52], k4
[113 52], k4
--- PASS: TestConvertToBytes (0.00s)
PASS