美文网首页
2020-06-09

2020-06-09

作者: nice西瓜 | 来源:发表于2020-06-09 09:13 被阅读0次

方法集

  • 类型的方法集是指可以被该类型的值调用的所有方法的集合
  • 用实例嗲用方法不受方法集约束,编译器能够找到所有方法,并自动转换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

相关文章

网友评论

      本文标题:2020-06-09

      本文链接:https://www.haomeiwen.com/subject/henjtktx.html