Code Fix

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

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

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

 1  package main
 2  
 3  import "fmt"
 4  
 5  type Shape struct{}
 6  
 7  func (s Shape) Name() string { return "shape" }
 8  
 9  type Circle struct{ Shape }
10  
11  func (c Circle) Name() string { return "circle" }
12  
13  func main() {
14  	c := Circle{}
15  	fmt.Println(____________________)
                           ^
16  }
出力: shape

空欄を埋めて実行を通す

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

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

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

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

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