将字符串转换为[]byte会得到一份数据吗? [重复]

问题描述 投票:0回答:0

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
string go type-conversion byte slice
© www.soinside.com 2019 - 2024. All rights reserved.