11 方法method

Go 中雖沒有class,但依舊有method
通過顯示說明receiver來實現(xiàn)與某個類型的組合
只能為同一個包中的類型定義方法
Receiver 可以是類型的值或者指針
不存在方法重載
可以使用值或指針來調(diào)用方法,編譯器會自動完成轉(zhuǎn)換
從某種意義上來說,方法是函數(shù)的語法糖,因為receiver其實就是
方法所接收的第1個參數(shù)(Method Value vs. Method Expression)
如果外部結(jié)構(gòu)和嵌入結(jié)構(gòu)存在同名方法,則優(yōu)先調(diào)用外部結(jié)構(gòu)的方法
類型別名不會擁有底層類型所附帶的方法
方法可以調(diào)用結(jié)構(gòu)中的非公開字段

type A struct {
Name string
}

type B struct {

}

func main(){
a := A{}
a.Print()

b := B{}
b.Print{}
}

func (a A) Print() {//這里的接受者是A Print 是方法名
fmt.Println("A")
}

func (a A) Print(n int) {//報錯 因為A已經(jīng)綁定了Print函數(shù)了 Go中不支持重寫或重載

}

func (b B) Print() {
fmt.Println("B")
}

func (a A) Print1() {

}

---end

Method Value vs. Method Expressio

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容