Method declarations

未匹配的标注

方法是有 接收者函数 。方法声明将标识符(方法名称)绑定到方法,并将该方法与接收者的基本类型关联起来。

MethodDecl = "func" Receiver MethodName Signature [ FunctionBody ] .
Receiver = Parameters .

接收者是通过方法名称前面的额外参数部分指定的。这个参数部分必须声明一个非可变参数,也就是接收者。其类型必须是定义类型 T 或指向已定义类型 T 的指针,T是称为接收者的基本类型。接收者的基本类型不能是指针或接口类型,并且必须在与方法相同的程序包中定义。这个定义过程称为将该方法与其接收器基本类型绑定,并且该方法名称仅在类型T*T选择器中可见。

一个非 接收者标识符 在方法签名中必须是 唯一 的。如果方法体中没有用到这个接收者那么在参数声明中可以省略,这一规则与函数和方法的普通参数类似。

对于基本类型而言, 绑定到它的的非空方法名称必须是唯一的。如果基本类型是 结构体类型](golang.org/ref/spec#Struct_types)...

例如,有一个定义类型 Point,对其声明如下方法

func (p *Point) Length() float64 {
    return math.Sqrt(p.x * p.x + p.y * p.y)
}

func (p *Point) Scale(factor float64) {
    p.x *= factor
    p.y *= factor
}

Length 和 Scale 方法绑定到了接收者 *Point 进而绑定到了基本类型 Point

方法的类型是将接收者作为第一个参数的函数类型。例如,方法Scale具有的类型是

func(p *Point, factor float64)

不过,以这种方式声明的函数不是方法。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-specificatio...

译文地址:https://learnku.com/docs/go-specificatio...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~