为了账号安全,请及时绑定邮箱和手机立即绑定

访问结构字段时 Golang 结构文字和指针之间的区别

访问结构字段时 Golang 结构文字和指针之间的区别

Go
www说 2021-11-29 19:37:27
在访问 struct fields 时,我不明白 struct 文字和 struct 指针之间的区别。有什么不同的内部行为吗?type Person struct {    Name string}p := &Person{Name: "Alice"}u := Person{Name: "Bob"}fmt.Println(p.Name)  // any difference ?fmt.Println(u.Name)  // any difference ?我搜索了这个,但我发现所有帖子都解释了值和指针之间的区别,或者“传递一个值”与“传递一个指针”到一个方法。他们不是我想知道的。
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

u是一个类型的变量Personp是一个“指向Person”类型的变量,它用匿名(“临时”)对象的地址初始化。该表达式p.Name使用指针的自动取消引用,等效于(*p).Name. 指向它的对象p只要p指向它就存在,并且此后可能会被 Go 的非确定性内存管理器销毁。

这两个p.Nameu.Name的类型的表达式string,而他们没有“的指针传递”,因为他们的地址不来电的。在 的情况下fmt.Println,该值实际上是使用 Go 的临时多态性结构子类型形式“通过接口”传递的。


查看完整回答
反对 回复 2021-11-29
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信