近日在使用golang的过程中发现golang的函数传参和python的稍有区别,现总结记录如下:

golang函数传参

1. 当传数组时

会将整个数组全都复制后进行值传递(函数修改数组后并不会影响数组的值),当数组比较大时,每次传递数组都很占用资源,所以一般不用数组传参

2. 当传切片时

此时是引用传递(函数修改切片后,外面的切片也相应被改变),但由于函数只是进行引用传递,并不会复制一遍值,所以一般都使用切片传值

python函数传参

  1. python函数传参时,传递的是这个对象,变量就是关于对象的引用;
  2. 所以当参数为可变对象时,此时是引用传递,函数改变参数值时外面的值也会相应改变;
  3. 当参数为不可变对象时,此时是值传递,函数改变参数值时外面的值不会相应改变;