Golang切片做为参数传递时,要改变传入的切片参数,需要传切片指针,否则只能改变切片内的值,不能改变切片本身
GO切片传值/引用/指针
鄙人一直以为切片,map 在函数调用过程中传递是值传递。这一点没错。和大家想的一样
但是此处有一个坑需要规避
就是 当所传原切片长度变大后。就是增长后,Go底层会为其分配新的地址来存储更多的值,这时候你传的原切片地址就会变成新的。
原理:
append()添加数据时并不会影响实参(的长度)。 (可以通过返回值覆盖(修改)实参的值(长度);或者通过切片的指针修改实参)
因此当函数中对原切片的长度进行扩增,调用append后,地址发生了变化。在不做返回值覆盖的情况下,需要传入原切片的指