Go 中雖沒有class,但依舊有method
通過顯示說明receiver來實現與某個類型的組合
只能為同一個包中的類型定義方法
Receiver 可以是類型的值或者指針
不存在方法重載
可以使用值或指針來調用方法,編譯器會自動完成轉換
從某種意義上來說,方法是函數的語法糖,因為receiver其實就是
方法所接收的第1個參數(Method Value vs. Method Expression)
如果外部結構和嵌入結構存在同名方法,則優先調用外部結構的方法
類型別名不會擁有底層類型所附帶的方法
方法可以調用結構中的非公開字段
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已經綁定了Print函數了 Go中不支持重寫或重載
}
func (b B) Print() {
fmt.Println("B")
}
func (a A) Print1() {
}
---end
Method Value vs. Method Expressio