Go方法指针接收器的语法

时间:2015-06-04 09:42:35

标签: go

在go中,也可以为指针接收器定义方法。 Go可以解释代码语法如下:

在方法的定义中,只编写接收器的指针类型就足够了,在函数定义中你不需要取消引用指针来访问你想要访问的内存中的对象。

在函数调用中,你不需要在我指的引用上调用指针类型的函数。 Go可以理解你的意思。

type Box struct {
    color string
}

var b Box

基于golang代码片段的原因在下面是什么?除了方便或代码简写之外还有其他原因吗?

顺便说一句,但经典的C方式也有效:

func (b *Box) setColor(c string) {
    b.color = c
}
b.setColor("blue")

古典C方式:

func (b *Box) setColor(c string) {
    (*b).color = c
}
(&b).setColor("blue")

1 个答案:

答案 0 :(得分:2)

正如你所说的简写:

来自规范

Method values

  

与方法调用一样,使用a引用非接口方法   使用可寻址值的指针接收器将自动获取   该值的地址:t.Mp相当于(& t).Mp。

method calls

  

方法调用x.m()在方法集(类型)x时有效   包含m,参数列表可以分配给参数列表   米如果x是可寻址的并且& x的方法集包含m,则x.m()是   (& x).m()

的简写