フィールド参照を使用したネストされた構造体の初期化
このタスクは、親構造体に属するフィールドを設定しながら、リテラル値を使用してネストされた構造体を初期化することです。 。以下に例を示します。
type A struct { MemberA string } type B struct { A MemberB string }
次に示すように、構造体リテラルで MemberA を直接初期化しようとすると失敗します。
b := B { MemberA: "test1", MemberB: "test2", } fmt.Printf("%+v\n", b)
これにより、エラー「不明な B フィールド '」が発生します。 MemberA' 構造体リテラル。"
MemberA を正しく初期化するには、有効なインスタンスを指定する必要があります次のコードに見られるように、親構造体 A の
b := B { A: A{MemberA: "test1"}, // Initialize the parent struct instance MemberB: "test2", }
コンパイラ エラー メッセージ「構造体リテラル内の不明な B フィールド 'MemberA'」は、MemberA が B の既知の直接フィールドではないことを示しています。代わりに、埋め込み型 A タイプに属します。 B 構造体を初期化するとき、匿名 A インスタンスは型名 A でのみ認識され、そのメンバーは作成されるまでインスタンスの外部には表示されません。
以上がGoでフィールド参照を使用してネストされた構造体フィールドを初期化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。