go里面所有的传递都是值传递。
1、传递的是个指针 传递的也是一个指针的副本,只是他们指向相同的内存,修改会同步变化.
2、传递的是个值得话,比如结构体,那就是结构体的一个副本,就算结构体的里面有个指针(也是生成一个指针的副本比如你修改了指针的值,原始的指针的值是不会变的),
注意、如果结构体里面有个slice的话,会怎么样呢??
因为slice的底层使用结构体实现的如下
type slice struct {
array unsafe.Pointer
len int
cap int
}
unsafe.Pointer里面是一个指针,传递的副本里面直接修改元素的值,原来的结构也会一起修改的
如果整个替换掉的那是不会把原来的结构体覆盖掉(如果传递的指针就会把原来的整个替换掉)