站长网 语言 Go:对象选择器自动解引用是什么?

Go:对象选择器自动解引用是什么?

从一个结构体实例对象中获取字段的值,通常都是使用 . 这个操作符,该操作符叫做 选择器。选择器有一个妙用,可能大多数人都不清楚。当你对象是结构体对象的指针时,你想要获取字段属性时,按照常规理解应该这么做type Profile struct { Name string}func m

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

 

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

 

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

 

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) 

是不是很简单?跟着明哥一起来攻克 Go 的各个边边角角的知识吧

 

 

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/biancheng/yuyan/2021/1103/18505.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部