リテラル構文でのネストされた構造体の初期化
Go では、リテラル構文を使用してネストされた構造体を初期化するのが難しい場合があります。この問題は、ネストされた構造体のメンバーに値を提供するときに親構造体のフィールドにアクセスしようとすると発生します。
たとえば、次の構造体について考えてみましょう。
type A struct { MemberA string } type B struct { A A MemberB string }
構造体 B のインスタンスを初期化するときリテラル構文を使用する場合、匿名構造体 A は初期化中にその型名でのみ認識されることに注意することが重要です。そのメンバーと関数は、インスタンスが存在した後にのみ公開されます。
親構造体の MemberA フィールドを初期化するには、A:
b := B{ A: A{MemberA: "test1"}, MemberB: "test2", }
コンパイラ エラー " 「不明な B フィールド 'MemberA' in struct literal」というエラーが発生するのは、MemberA フィールドが依然として匿名構造体 A の一部であり、B にまだ公開されていないためです。 struct.
要約すると、上記の修正された初期化コードで示されているように、ネストされた構造体をリテラル構文で初期化するには、ネストされた構造体のメンバーに値を割り当てるときに親構造体の有効なインスタンスを提供する必要があります。
以上がリテラル構文を使用して Go でネストされた構造体を適切に初期化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。