Go语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。
提示
参数如果是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;如果是引用类型(指针、map、slice、chan等这些),这样就可以修改原内容数据。
是否可以修改原内容数据,和传值、传引用没有必然的关系。但在Go语言里因为参数是引用类型,虽然只有传值,但是我们还是可以修改原内容数据。
注意
引用类型和引用传递是2个概念!!!
什么是值传递?
将实参的值传递给形参,形参是实参的一份拷贝,实参和形参的内存地址不同。函数内对形参值内容的修改,是否会影响实参的值内容,取决于参数是否是引用类型。
什么是引用传递?
将实参的地址传递给形参,函数内对形参值内容的修改,将会影响实参的值内容,但是Go语言是没有引用传递的。