3 回答

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

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

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
func (a A) foo(){}
這是個語法糖,翻譯過來就是
func foo(a A){
}
這里的a 可以是任何名字,一般我們用this,使用指針傳參。
func(this *A) foo(){}
- 3 回答
- 0 關(guān)注
- 792 瀏覽
添加回答
舉報