[英]Why do you have to use an asterisk for pointers but not struct pointers?
我想我错过了一部分技术背景。 但我不明白,为什么我必须使用 * 来访问简单指针的值,而不是访问结构的值。
例如一个简单的值:
func main() {
i := 42
p := &i
*p = 21 // <<< I have to use an asterisk to access the value
// ...
}
和一个带有结构的例子:
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
// ...
}
(是的,示例来自此处的官方 go lang tour: https : //go-tour-de.appspot.com/moretypes/4 )
就我的想法而言,我会期待这样的事情
*p.X = 1e9
或者(是的,这会有点奇怪)
p.*X = 1e9
那么,为什么我不必使用星号来访问结构指针呢?
您在 [此处] 中找到该示例的官方 Golang 之旅明确指出:
当我们拥有结构体指针
p
时,要访问结构体的字段X
,我们可以编写(*p).X
。 但是,这种表示法很麻烦,因此该语言允许我们只编写pX
,而无需显式取消引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.