ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 实例 通过下面的例子可以看的很明白,如果不使用引用语义的话,对结构体变量的修改是无法保存的. ~~~ type person struct { name string age int } func (p person) setInfoValue(n string, a int) { p.name = n p.age = a fmt.Println(p) fmt.Printf("%p\n", &p) } func (p *person) setInfoPointer(n string, a int) { p.name = n p.age = a fmt.Println(p) fmt.Printf("%p\n", p) } func main() { p1 := person{} fmt.Printf("%p\n", &p1) p1.setInfoValue("jack", 20) fmt.Println(p1) p2 := person{} fmt.Printf("%p\n", &p2) p2.setInfoPointer("milan", 30) fmt.Println(p2) } ~~~ ~~~ 0xc04204c3e0 {jack 20} 0xc04204c420 //和上面内存地址不一样,证实是拷贝 { 0} 0xc04204c460 &{milan 30} 0xc04204c460 //和上面内存地址是一致的,证实是引用 {milan 30} ~~~