Go 中的方法重載:存取嵌入式類型方法
在Go 中使用結構體時,可以在父級和父級上定義方法嵌入(巢狀)結構。然而,當子結構中的方法被重載時,直接存取基結構的方法似乎是不可能的。
使用方法重載重寫方法
在提供的範例中, Employee 結構嵌入了 Human 結構。這兩個結構都定義了 SayHi() 方法。但是,Employee 結構體的 SayHi() 方法會覆寫 Human 結構體中的方法。
存取嵌入類型方法
要存取嵌入結構體的方法,儘管有重載方法,您可以使用以下語法:
parentMember.embeddedMemberName.methodName()
在這種情況下,呼叫Human Employee 結構體中的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中文網其他相關文章!