方法集
- 类型的方法集是指可以被该类型的值调用的所有方法的集合
- 用实例嗲用方法不受方法集约束,编译器能够找到所有方法,并自动转换receiver实参
指针方法集
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{"mia", 'd', 32}
p.SetInfoPointer()
//把(*p)转换成p后再调用,等价于上面
(*p).SetInfoPointer()
//内部做的转换,先把指针p,转成*p后再调用
p.SetInfoValue()
//跟上面等价
(*p).SetInfoValue()
}
//result
SetInfoPointer
SetInfoPointer
SetInfoValue
SetInfoValue
普通变量方法集
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{"mia", 'd', 32}
p.SetInfoPointer()
//内部先把p,转为&p再进行调用,如下:
(&p).SetInfoPointer()
}
//result
SetInfoPointer
SetInfoPointer
网友评论