猿问

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

在访问 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 ?

我搜索了这个,但我发现所有帖子都解释了值和指针之间的区别,或者“传递一个值”与“传递一个指针”到一个方法。他们不是我想知道的。


www说
浏览 158回答 1
1回答

慕仙森

u是一个类型的变量Person。p是一个“指向Person”类型的变量,它用匿名(“临时”)对象的地址初始化。该表达式p.Name使用指针的自动取消引用,等效于(*p).Name. 指向它的对象p只要p指向它就存在,并且此后可能会被 Go 的非确定性内存管理器销毁。这两个p.Name和u.Name的类型的表达式string,而他们没有“的指针传递”,因为他们的地址不来电的。在 的情况下fmt.Println,该值实际上是使用 Go 的临时多态性结构子类型形式“通过接口”传递的。
随时随地看视频慕课网APP

相关分类

Go
我要回答