近日在使用golang的过程中发现golang的函数传参和python的稍有区别,现总结记录如下:
golang函数传参
1. 当传数组时
会将整个数组全都复制后进行值传递(函数修改数组后并不会影响数组的值),当数组比较大时,每次传递数组都很占用资源,所以一般不用数组传参
2. 当传切片时
此时是引用传递(函数修改切片后,外面的切片也相应被改变),但由于函数只是进行引用传递,并不会复制一遍值,所以一般都使用切片传值
python函数传参
- python函数传参时,传递的是这个对象,变量就是关于对象的引用;
- 所以当参数为可变对象时,此时是引用传递,函数改变参数值时外面的值也会相应改变;
- 当参数为不可变对象时,此时是值传递,函数改变参数值时外面的值不会相应改变;