go指针赋值和直接赋值的区别(小记)
2024-05-23 本文已影响0人
小马过河R

https://blog.csdn.net/weixin_33874713/article/details/88926855
https://www.cnblogs.com/yang-2018/p/11119008.html
结构体直接传参到普通函数,和php一样只传值,不传实例变量的地址,函数内改不了函数外的变量实例。

指针是一个地址值。 var a int = 20 =>&a 是变量地址值1110; var b *int =>b是地址值1110,b =&a,*b是变量的值 20
如果是普通函数 func M2(t T)的传值,则只是 传实例(T 结构体,实例t=T{}或t=&T{} )地址 和传实例值的区别。
结构体下带的函数,如果形参不是指针地址func (t T) M1{ },实例t1(可以是直接 结构体赋值t1=T{"1"}也可以是赋值取地址t1=&T{"1"})的属性都不会被函数修改,因为形参只是 实例的一个副本。要传指针 func (t *T) M1{ }