Go 对象选择器自动解引用怎么用?详解

从一个结构体实例对象中获取字段的值,通常都是使用 . 这个操作符,该操作符叫做 选择器

选择器有一个妙用,可能大多数人都不清楚。

当你对象是结构体对象的指针时,你想要获取字段属性时,按照常规理解应该这么做

type Profile struct {
    Name string
}

func main() {
    p1 := &Profile{"iswbm"}
  fmt.Println((*p1).Name)  // output: iswbm
}

但还有一个更简洁的做法,可以直接省去 * 取值的操作,选择器 . 会直接解引用,示例如下

type Profile struct {
    Name string
}

func main() {
    p1 := &Profile{"iswbm"}
    fmt.Println(p1.Name)  // output: iswbm
}

也正是这个原因,因此在给你一个方法指定定一个接收者的时候,访问接收者的对象时,不需要像下面这样显示的解引用

type Person struct {
    name string
}

func (p *Person) Say() {
    fmt.Println((*p).name)
}

而可以直接这样写

type Person struct {
    name string
}

func (p *Person) Say() {
    fmt.Println(p.name)
}

教程来源于Github,感谢iswbm大佬的无私奉献,致敬!

技术教程推荐

iOS开发高手课 -〔戴铭〕

Vue开发实战 -〔唐金州〕

OpenResty从入门到实战 -〔温铭〕

性能工程高手课 -〔庄振运〕

张汉东的Rust实战课 -〔张汉东〕

高楼的性能工程实战课 -〔高楼〕

如何讲好一堂课 -〔薛雨〕

快速上手C++数据结构与算法 -〔王健伟〕

结构思考力 · 透过结构看思考 -〔李忠秋〕