小编Chl*_*loe的帖子

这个Go代码如何通过指针设置对象的值,而不解除引用?

我正在学习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)

pointers go

2
推荐指数
1
解决办法
56
查看次数

标签 统计

go ×1

pointers ×1