Go 中的方法重载和嵌入式类型访问
Go 中,方法重载允许定义多个同名但不同的方法参数或返回类型。当 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) } func main() { sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() // calls Employee.SayHi sam.Human.SayHi() // calls Human.SayHi }
在此示例:
方法重载和嵌入类型
当嵌入类型的方法被重载时,子结构可以访问所有重载。例如:
package main import "fmt" type A struct { SayHi func(string) } type B struct { A } func main() { a := B{} a.SayHi = func(s string) { fmt.Println("Hello", s) } a.SayHi("World") // prints "Hello World" }
在此示例中:
以上是使用方法重载时如何访问 Go 中嵌入类型的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!