Code Fix

上級埋め込み構造体のメソッドが外側の同名メソッドにシャドーイングされる › パターン4

埋め込み構造体のメソッドが外側の同名メソッドにシャドーイングされる

構造体に別の構造体を埋め込むと、埋め込み側のメソッドが昇格して呼び出せるようになります。

 1  package main
 2  
 3  import "fmt"
 4  
 5  type Employee struct{}
 6  
 7  func (e Employee) Role() string { return "staff" }
 8  
 9  type Manager struct{ Employee }
10  
11  func (m Manager) Role() string { return "manager" }
12  
13  func main() {
14  	m := Manager{}
15  	fmt.Println(__________________________)
                              ^
16  }
出力: staff

空欄を埋めて実行を通す

広告
広告スロット(未設定)

埋め込み構造体のメソッドが外側の同名メソッドにシャドーイングされる

しかし外側の構造体が同名のメソッドを定義していると、そちらが優先され埋め込み側のメソッドは隠れてしまいます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)