- for循环时, ele元素是独立内存空间的复制数据, 具体看注释
func TestString(t *testing.T) {
//字符串类型,底层是不可变的byte数组, 英文字母点1个字节8位, 汉字点3个字节,点24位
s := "abc中国"
sl := []rune(s)
for i, ele := range sl {
//ele变更是独立的内存copy,ele和 sl[i]不是共享一个内存
fmt.Printf("%p - %p - %c \n ",
&ele,
&sl[i],
sl[i],
)
}
}
- 输出结果
API server listening at: 127.0.0.1:54228
=== RUN TestString
0xc000212bb0 - 0xc00000e8a0 - a
0xc000212bb0 - 0xc00000e8a4 - b
0xc000212bb0 - 0xc00000e8a8 - c
0xc000212bb0 - 0xc00000e8ac - 中
0xc000212bb0 - 0xc00000e8b0 - 国
--- PASS: TestString (0.00s)
PASS