上級 › 埋め込み構造体のメソッドが外側の同名メソッドにシャドーイングされる › パターン1
埋め込み構造体のメソッドが外側の同名メソッドにシャドーイングされる
構造体に別の構造体を埋め込むと、埋め込み側のメソッドが昇格して呼び出せるようになります。
1 package main 2 3 import "fmt" 4 5 type Animal struct{} 6 7 func (a Animal) Sound() string { return "..." } 8 9 type Dog struct{ Animal } 10 11 func (d Dog) Sound() string { return "Woof" } 12 13 func main() { 14 d := Dog{} 15 fmt.Println(_______________________) ^ 16 }
出力: ...
空欄を埋めて実行を通す
DogはSoundを独自に定義しているため、d.Sound()と書くだけでそちらが優先されます。d.Animal.Sound()と明示的に書くと、埋め込み側の実装を直接呼び出してしまいます。
次の問題