加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 09:40:50 所属栏目:大数据 来源:网络整理
导读:我试图学习Go,我找到了一个很好的资源 here。 下面给出了方法重载的例子: package mainimport "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 %
我试图学习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 %sn",h.name,h.phone)
}

func (e *Employee) SayHi() {
    fmt.Printf("Hi,I am %s,I work at %s. Call me on %sn",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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读