Golang struct当方法被重载时调用嵌入式类型方法

前端之家收集整理的这篇文章主要介绍了Golang struct当方法被重载时调用嵌入式类型方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图学习Go,我找到了一个很好的资源 here

下面给出了方法重载的例子:

package main
import "fmt"

type Human struct {
    name string
    age int
    phone string
}


type Employee struct {
    Human 
    company string
}

func (h *Human) SayHi() {
    fmt.Printf("Hi,I am %s you can call me on %s\n",h.name,h.phone)
}

func (e *Employee) SayHi() {
    fmt.Printf("Hi,I am %s,I work at %s. Call me on %s\n",e.name,e.company,e.phone) //Yes you can split into 2 lines here.
}

func main() {
    sam := Employee{Human{"Sam",45,"111-888-XXXX"},"Golang Inc"}
    sam.SayHi()
}

可以调用“base”结构体(Human)的方法,例如。 sam.Human.SayHi()下转不工作(因为没有类型层次结构?)

您可以通过使用嵌入类型名称名称调用父成员来访问父结构的嵌入式结构。这是一个口,所以它可能更容易展示它。
sam := Employee{Human{"Sam","Golang Inc"}
 sam.SayHi() // calls Employee.SayHi
 sam.Human.SayHi() // calls Human.SayHi

输出

Hi,I am Sam,I work at Golang Inc. Call me on 111-888-XXXX
 Hi,I am Sam you can call me on 111-888-XXXX

猜你在找的Go相关文章