Go 中的传参是值传递还是引用传递?

Go 中的传参是值传递还是引用传递? #

Go语言中所有的传参都是值传递(传值):

  • 拷贝的内容有时候是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;
  • 有的是引用类型(指针、map、slice、chan等这些),这样就可以修改原内容数据。

之所以会出现有些类型可能为“引用”传递的错觉,是因为 fmt 包中对这些类型(slice、map、chan)做了特殊处理。

References #