方法集
類型的方法集是指可以被該類型的值調用的所有方法的集合。
用實例實例 value 和 pointer 調用方法(含匿名字段)不受方法集約束,編譯器編總是查找全部方法,並自動轉換 receiver 實參。
1、指針類型和普通類型的方法集
示例:
package main import "fmt" type Person struct { name string //名字 sex byte //性別, 字符類型 age int //年齡 }
//非指針 func (p Person) SetInfoValue() { fmt.Println("SetInfoValue") }
//指針 func (p *Person) SetInfoPointer() { fmt.Println("SetInfoPointer") } func main() { //結構體變量是一個指針變量,它能夠調用哪些方法,這些方法就是一個集合,簡稱方法集 p := &Person{"mike", 'm', 18} p.SetInfoPointer() //func (p *Person) SetInfoPointer() //(*p).SetInfoPointer() //把(*p)轉換層p后再調用,等價於上面 //內部做的轉換, 先把指針p, 轉成*p后再調用 //(*p).SetInfoValue() //p.SetInfoValue() }
執行結果:
SetInfoPointer