golang传值和传引用
这里不会解释关于指针的情况,如果读者对C语言或者C++的指针比较了解,那么就能更好地理解本文。
定义
对于代码
modify(a);
a.modify();
如果modify中对于a的修改不会改变传入的a的值,那么就是传值调用;否则,是传引用。
传值调用是将传入的变量在内存中复制一份进行操作,所以本质是存储在不同内存地址的不同变量。
传引用是将传入变量的内存地址,在函数操作中,通过内存地址将变量取出进行操作,所以本质是存储在同一个内存地址的相同变量。
Go语言
基础类型
基本类型:byte,int,bool,string
均是传值调用。
数组
传值调用
func main() {
var array = [3]int{
0, 1, 2}
var array2 = array
slice2[2]