Pointers Golang结构文本与;访问结构字段时的指针
在访问结构字段时,我不理解结构文本和结构指针之间的区别。有什么不同的内在行为吗Pointers Golang结构文本与;访问结构字段时的指针,pointers,struct,go,Pointers,Struct,Go,在访问结构字段时,我不理解结构文本和结构指针之间的区别。有什么不同的内在行为吗 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 ? 我搜索了这篇文章,但找到的所有文章都解释了值和指针,或者“
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 ?
我搜索了这篇文章,但找到的所有文章都解释了值和指针,或者“传递值”和“传递指针”到方法之间的区别。它们不是我想知道的。
u
是Person
类型的变量p
是一个类型为“指向Person
”的变量,它用匿名(“临时”)对象的地址初始化。表达式p.Name
使用指针的自动解引用,相当于(*p).Name
。p
指向的对象只要p
指向它就可以生存,并且此后可能会被Go的非确定性内存管理器销毁
p.Name
和u.Name
都是string
类型的表达式,它们不是“通过指针传递的”,因为它们的地址不在调用中。在fmt.Println
的情况下,该值实际上是使用Go的特殊多态性结构子类型形式“通过接口”传递的。是!“指针的自动解引用”正是我想搜索但不知道的关键字。你的回答很有帮助,也很清楚。谢谢。对于不太熟悉围棋和一般的指针/参考的人来说,这能用外行的术语来解释吗?实际意义是什么?