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 中国語 Web サイトの他の関連記事を参照してください。