Go,为什么不应该使用"this"作为方法接收者名称

b.b*_*ben 3 reflection go visual-studio-code

我使用VS Code Go扩展.

这是我的代码

func (this *MyClass) Xxx() error {}
Run Code Online (Sandbox Code Playgroud)

它提到了我

导出的方法MyClass.Xxx应该有注释或未导出

接收者名称应该反映其身份; 不要使用通用名称,如" me"," this"或" self";

Von*_*onC 7

由于这里提到

v.Method()实际上是语法糖,Go也理解它的脱糖版本:(T).Method(v).你可以在这里看到一个例子.

package main

type T struct{}

func (t T) Method() {}

func main() {
    t := T{}
    t.Method()    // this is valid
    (T).Method(t) // this too
}
Run Code Online (Sandbox Code Playgroud)

像任何其他参数一样命名接收器反映出它实际上只是另一个参数.

正如Ixrec这个答案中所说:

在其他语言中,this/ self/ whatever变量通常具有一些特殊属性,例如由语言神奇地提供,或者具有对私有方法的特殊访问(记住Go没有私有字段/方法).
虽然"接收器"仍然在某种程度上"神奇地提供",但它与常规函数论证非常相似,它可以说是不计算在内的.

  • 另请参阅 https://github.com/golang/go/wiki/CodeReviewComments#receiver-names (2认同)