3 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
main中的a和foo中的a沒有任何關系。在foo中的a,只是一個局部變量的名字,這個a被稱為接收器(receiver name)。main中的a,也只是一個局部變量的名字,二者變量名相同而已。
foo中的a是類型A的接收器名字,foo是類型A的一個函數,a其實就是代表類型A的一個實例,即使例子中a是沒有用到的,但不能缺少。

浮云間
TA貢獻1829條經驗 獲得超4個贊
在 golang 里面,type 可以類比面向對象語言里面 類;該 類型 的變量可以類比面向對象語言的 對象。
main 中的 a 就是你實例化的對象;foo 中的 a 就相當于 this(即當前對象),你可以想象一個場景:如果你想在 foo 中使用 Name 怎么辦?
foo 里面的 a 相當于是 main 里面的 a 的(但 如果類型 A 在其他包中定義,main 里面的 a 是訪問不到私有成員的)
你可以類比面向對象里面的 this。如果你不用不到 a 的話,完全可以不寫
你還不理解的話繼續在下面評論里面追問吧,我這里可能描述的不好,因為我暫時沒想好怎么描述

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
func (a A) foo(){}
這是個語法糖,翻譯過來就是
func foo(a A){
}
這里的a 可以是任何名字,一般我們用this,使用指針傳參。
func(this *A) foo(){}
- 3 回答
- 0 關注
- 793 瀏覽
添加回答
舉報
0/150
提交
取消