ホームページ > バックエンド開発 > Golang > リテラル構文を使用して Go でネストされた構造体を適切に初期化する方法?

リテラル構文を使用して Go でネストされた構造体を適切に初期化する方法?

DDD
リリース: 2024-12-21 06:24:21
オリジナル
872 人が閲覧しました

How to Properly Initialize Nested Structs in Go Using Literal Syntax?

リテラル構文でのネストされた構造体の初期化

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート