2020-06-09

2020-06-09  本文已影响0人  nice西瓜

方法集

指针方法集

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

上一篇 下一篇

猜你喜欢

热点阅读