Go 中的方法重载:访问嵌入式类型方法
在 Go 中使用结构体时,可以在父级和父级上定义方法嵌入(嵌套)结构。然而,当子结构中的方法被重载时,直接访问基结构的方法似乎是不可能的。
使用方法重载重写方法
在提供的示例中, Employee 结构嵌入了 Human 结构。这两个结构都定义了 SayHi() 方法。但是,Employee 结构体的 SayHi() 方法会覆盖 Human 结构体中的方法。
访问嵌入类型方法
要访问嵌入结构体的方法,尽管有重载方法,您可以使用以下语法:
parentMember.embeddedMemberName.methodName()
在这种情况下,要从 Employee 结构调用 Human 结构的 SayHi() 方法,您可以使用:
sam.Human.SayHi()
代码示例
以下示例演示了访问嵌入结构体的方法:
package main import "fmt" type Human struct { name string age int phone string } func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone) } type Employee struct { Human company string } 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) } func main() { 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
这演示了即使在子结构中重载方法,您仍然可以使用上述语法访问嵌入类型的方法。
以上是当子结构中重载时,如何访问 Go 中的嵌入类型的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!