
golang string转化byte数组一定会发生内存拷贝吗
实际原因:是golang 编译器的优化。Go 1.22版本中(测试使用go版本为go 1.22),编译器对string到byte切片的转换进行了优化。明显,两者string和byte切片的底层指向的字符数组起始地址时一致的,这与一定会发生拷贝的现象描述并不符合。结果是byte切换指向的内存地址发生改变,这表明byte切片底层起始指向的byte数组跟string是同一个,编辑后发生了改变。使用go 1.21版本测试,发现输出结果中指向的底层byte数组不一致,说明编译器并没有对转化操作进行优化。









