Go 構造体の匿名フィールド
Go では、構造体に匿名フィールド (明示的な名前のないフィールド) を含めることができます。これらのフィールドを使用すると、別の構造体または型を現在の構造体に埋め込むことができ、明示的にリストすることなく、埋め込まれた型のフィールドにアクセスできるようになります。
匿名フィールドの目的
匿名フィールドにはいくつかの目的があります:
匿名フィールドへのアクセス
名前付きフィールドにアクセスするのと同じ方法で、匿名フィールドにアクセスできます。プロモートされたフィールドには、親構造体のフィールド名を使用して直接アクセスできます。他の匿名フィールドには、埋め込み型のフィールド名を使用してアクセスできます。
例
次のコードを考えてみましょう:
package main import "fmt" type Widget struct { name string } type WrappedWidget struct { Widget // Promoted field Time time.Time Price int64 } func main() { widget := Widget{"my widget"} wrappedWidget := WrappedWidget{widget, time.Now(), 1234} fmt.Printf("Widget named %s, created at %s, has price %d\n", wrappedWidget.name, // Accessing the promoted field wrappedWidget.Time, // Accessing an anonymous field wrappedWidget.Price) // Accessing a normal field }
出力:
Widget named my widget, created at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, has price 1234
この例では、WrappedWidget は Widget 構造体を埋め込み、その name フィールドをプロモートします。その結果、WrappedWidget インスタンスの名前フィールドに直接アクセスできるようになります。
以上がGo 構造体で匿名フィールドはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。