golang中 slice作参数本质是值传递
qq_51117542
于 2022-08-16 01:36:46 发布
208
收藏
文章标签:
golang
slice作函数参数传递指向底层数组的指针
如果在函数内slice没有发生扩容,则形参改变实参
而 如果发生扩容(slice通过append添加元素时超出容量),则形参不改变实参
原因是
slice扩容本质是 创建一个新数组,容量翻倍,再将原切片复制过去,再进行append操作,最后让形参指向该新数组,此时的形参和实参地址不同,因此形参无法改变实参