dougao7801 2016-06-25 06:35
浏览 697
已采纳

去,为什么不应该使用“ this”作为方法接收者的名字[重复]

This question already has an answer here:

I use VS Code Go extension.

Here's my code

func (this *MyClass) Xxx() error {}

And It's mention me this

exported method MyClass.Xxx should have comment or be unexported

receiver name should be a reflection of its identity; don't use generic names such as "me", "this", or "self";

</div>
  • 写回答

1条回答 默认 最新

  • doukang8949 2016-06-25 06:37
    关注

    As mentioned here

    v.Method() is actually syntactic sugar and Go also understands the de-sugared version of it: (T).Method(v). You can see an example here.

    package main
    
    type T struct{}
    
    func (t T) Method() {}
    
    func main() {
        t := T{}
        t.Method()    // this is valid
        (T).Method(t) // this too
    }
    

    Naming the receiver like any other parameter reflects that it is, in fact, just another parameter quite well.

    As Ixrec puts it in this answer:

    In other languages the this/self/whatever variable typically has some special properties such as being magically provided by the language, or having special access to private methods (remember Go doesn't have private fields/methods).
    Though the "receiver" is still being "magically provided" to some extent, it's so similar to a regular function argument it arguably doesn't count.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)