在访问 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
是一个类型的变量Person
。p
是一个“指向Person
”类型的变量,它用匿名(“临时”)对象的地址初始化。该表达式p.Name
使用指针的自动取消引用,等效于(*p).Name
. 指向它的对象p
只要p
指向它就存在,并且此后可能会被 Go 的非确定性内存管理器销毁。
这两个p.Name
和u.Name
的类型的表达式string
,而他们没有“的指针传递”,因为他们的地址不来电的。在 的情况下fmt.Println
,该值实际上是使用 Go 的临时多态性结构子类型形式“通过接口”传递的。
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消