方法集
類型的方法集是指可以被該類型的值調用的所有方法的集合。
用實例實例 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
