方法重载时,Golang结构调用嵌入式类型方法

李:

我正在尝试学习Go,并且在这里找到了很好的资源

下面给出了有关方法重载的示例:

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()
}

是否可以调用“基本”结构的(人类)方法,例如。sam.Human.SayHi()向下转换不起作用(因为没有正确的类型层次结构?)

猎人费尔南德斯:

您可以通过使用嵌入类型名称的名称调用父级成员来访问父级结构的嵌入结构。那是一个大嘴巴,所以可能更容易证明。

 sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从嵌入式结构遍历结构值

Java的for-each是否为每次迭代都调用嵌入式方法(返回集合)?

如何调用作为接口传递的对象的嵌入式struct方法?

Golang嵌入式结构

GoLang的类型转换到由结构体和嵌入式结构体实现的接口的工作方式

Golang嵌入式结构类型

如何将我的自定义UnmarshalJSON方法应用于嵌入式结构?

仅导出由嵌入式结构实现的方法子集

如何正确地将带有String()方法的嵌入式结构序列化为JSON字符串?

如何从GO结构获取嵌入式类型?

使用父结构的方法更改嵌入式结构的属性

父结构上的Golang嵌入式接口

嵌入式结构

从嵌入式结构访问结构字段

元帅嵌入式结构

嵌入式JSON结构

去嵌入式结构调用子方法代替父方法

嵌入式结构的覆盖行为

如何共享嵌入式结构指针

访问GoLang中的嵌入式方法

初始化嵌入式结构时的指针差异

在Go中调用嵌入式类型的重载方法的正确方法

Golang + MongoDB嵌入式类型(在另一个结构中嵌入一个结构)

如何从嵌入式结构的方法反映包含结构的字段?

在.NET Core 3中获取嵌入式资源内容的类型安全方法

当使用Session变量控制我的嵌入式YouTube播放器时,我收到错误消息:Uncaught TypeError:无法调用null的方法'postMessage'?

为什么我不能从嵌入式UITableViewController调用存储在父UIViewController中的方法?

当参数是给定类型的子类时如何调用重载方法?

模拟嵌入式单元测试时出错“重载函数的地址与所需类型‘void()’不匹配”