我正在学习Java/Python背景,并且对Go教程中的代码感到困惑.在下面的代码中,该行
p.X = 1e9
Run Code Online (Sandbox Code Playgroud)
使用指针p将vX的值设置为1e9.由于p只是指向v的指针,因此不需要解除引用来设置v的值吗?因此,正确的陈述是:
*p.X = 1e9
Run Code Online (Sandbox Code Playgroud)
当然,这会导致错误.有人可以解释为什么Go示例代码可以正常工作吗?
有问题的代码:
package main
import (
"fmt"
)
type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
p := &v
p.X = 1e9
fmt.Println(v)
}
Run Code Online (Sandbox Code Playgroud)