为了账号安全,请及时绑定邮箱和手机立即绑定

golang方法的参数问题?

golang方法的参数问题?

Go
陪伴而非守候 2019-02-05 10:06:15
golang方法的参数问题
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

  1. main中的a和foo中的a没有任何关系。在foo中的a,只是一个局部变量的名字,这个a被称为接收器(receiver name)。main中的a,也只是一个局部变量的名字,二者变量名相同而已。

  2. foo中的a是类型A的接收器名字,foo是类型A的一个函数,a其实就是代表类型A的一个实例,即使例子中a是没有用到的,但不能缺少。


查看完整回答
反对 回复 2019-03-16
?
浮云间

TA贡献1829条经验 获得超3个赞

在 golang 里面,type 可以类比面向对象语言里面 类;该 类型 的变量可以类比面向对象语言的 对象。

main 中的 a 就是你实例化的对象;foo 中的 a 就相当于 this(即当前对象),你可以想象一个场景:如果你想在 foo 中使用 Name 怎么办?

  1. foo 里面的 a 相当于是 main 里面的 a 的(但 如果类型 A 在其他包中定义,main 里面的 a 是访问不到私有成员的)

  2. 你可以类比面向对象里面的 this。如果你不用不到 a 的话,完全可以不写


你还不理解的话继续在下面评论里面追问吧,我这里可能描述的不好,因为我暂时没想好怎么描述


查看完整回答
反对 回复 2019-03-16
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

func (a A) foo(){}
这是个语法糖,翻译过来就是
func foo(a A){

}

这里的a 可以是任何名字,一般我们用this,使用指针传参。

func(this *A) foo(){}


查看完整回答
反对 回复 2019-03-16
  • 3 回答
  • 0 关注
  • 728 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信