Pointers 为什么必须使用星号作为指针,而不是结构指针?
我想我缺少了一部分技术背景。但我不明白,为什么我必须使用*来访问简单指针的值,而不是访问结构的值 例如,使用简单值:Pointers 为什么必须使用星号作为指针,而不是结构指针?,pointers,go,struct,Pointers,Go,Struct,我想我缺少了一部分技术背景。但我不明白,为什么我必须使用*来访问简单指针的值,而不是访问结构的值 例如,使用简单值: func main() { i := 42 p := &i *p = 21 // <<< I have to use an asterisk to access the value // ... } 或者(是的,这有点奇怪) 那么,为什么我不使用星号来访问结构指针呢?在官方的Golang tour中,您发
func main() {
i := 42
p := &i
*p = 21 // <<< I have to use an asterisk to access the value
// ...
}
或者(是的,这有点奇怪)
那么,为什么我不使用星号来访问结构指针呢?在官方的Golang tour中,您发现了该示例[]明确指出: 当我们有结构指针
p
时,要访问结构的字段X
,我们可以编写(*p).X
。但是,这种表示法很麻烦,因此该语言允许我们只编写p.X
,而不需要显式的去引用
语法糖让程序员的生活更轻松。我想你说的是结构域,不是结构。太好了!我使用了德语版的教程来寻找答案,但是缺少了这个小而重要的细节()。请注意,始终使用英文原始文档。谢谢你的回答。很有趣,我不知道有其他语言的版本,也没想到会有不同的内容。很高兴知道,谢谢。
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
p := &v
p.X = 1e9 // <<< I do not have to use an asterisk
// ...
}
*p.X = 1e9
p.*X = 1e9