值类型:基本数据类型,int,float,bool,string,以及数组和struct
特点:变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放
引用类型:指针,映射(map),数组切片(slice),通道(channel),方法与函数
特点:变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,通过GC回收。
所有变量(包括参数, 结构体成员),都是值
指针变量也是值,只是值的内容是另一个变量的地址
所以Golang 实际上都是值传递(浅拷贝),没有引用传递,只不过传递引用类型的时候相当于引用传递