首页 > 解决方案 > 点运算符如何在结构与指向结构的指针上工作?

问题描述

这可能是 Go 的基础。点运算符如何.在结构与指向结构的指针上工作?

type cc struct {
  x int
}

func main() {
    obj := cc{x:2}
    ptr := &cc{x:3}
    
    fmt.Printf("Hello, %v\n", obj.x) // Hello, 2
    fmt.Printf("Hello, %v\n", ptr.x) // Hello, 3
}

在上述两种情况下,它如何能够访问该字段?

标签: go

解决方案


编译器会自动为指针接收器添加必要的间接寻址。因此,ptr.x(*ptr).x

https://golang.org/ref/spec#Selectors


推荐阅读