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的特殊多态性结构子类型形式“通过接口”传递的。

是!“指针的自动解引用”正是我想搜索但不知道的关键字。你的回答很有帮助,也很清楚。谢谢。对于不太熟悉围棋和一般的指针/参考的人来说,这能用外行的术语来解释吗?实际意义是什么?