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 }
在此範例:
父結構體 (Employee) 和嵌入結構體 (Human) 都有一個 SayHi() 方法。 要存取Human 結構體的SayHi() 方法,我們使用sam.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中文網其他相關文章!