golang中 slice作参数本质是值传递
qq_51117542 于 2022-08-16 01:36:46 发布 208 收藏
文章标签: golang

 

slice作函数参数传递指向底层数组的指针

如果在函数内slice没有发生扩容,则形参改变实参

而 如果发生扩容(slice通过append添加元素时超出容量),则形参不改变实参

原因是

slice扩容本质是 创建一个新数组,容量翻倍,再将原切片复制过去,再进行append操作,最后让形参指向该新数组,此时的形参和实参地址不同,因此形参无法改变实参