ホームページ  >  記事  >  バックエンド開発  >  Go で埋め込み構造体をアンマーシャルするにはどうすればよいですか?

Go で埋め込み構造体をアンマーシャルするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 12:13:30789ブラウズ

How to Unmarshal Embedded Structs in Go?

Go での埋め込み構造体のアンマーシャリング

この記事では、JSON データを埋め込み構造体を含む構造体にアンマーシャリングする問題について説明します。提供された例では、内部構造体が外部構造体に埋め込まれており、内部構造体のデフォルトの UnmarshalJSON メソッドが呼び出され、Data フィールドのみが設定され、Outer の Num フィールドは空のままであることがわかります。

理由この動作は Go の組み込み構造体メカニズムにあるためです。埋め込まれた構造体がアンマーシャリングされると、アンマーシャリング プロセスは埋め込まれた構造体を直接ターゲットにし、外部構造体のフィールドを無視します。

これに対処するために、よりシンプルで効率的な解決策が提案されています。それは、内部構造体を明示的なフィールドにすることです。

Inner をフィールドとして明示的に宣言することで、Outer struct の UnmarshalJSON メソッドが全体を使用して呼び出されます。 JSONデータ。このメソッド内では、埋め込まれた Inner 構造体の UnmarshalJSON メソッドを使用して Inner の Data フィールドに値を設定でき、Num フィールドには個別に値を設定できます。このアプローチにより、アンマーシャリング中に外部構造体の両方のフィールドが適切に設定されることが保証されます。

ソリューションを説明するための実際の例を次に示します。

<code class="go">type Outer struct {
    I Inner     // Inner as explicit field
    Num int `json:"Num"`
}</code>

以上がGo で埋め込み構造体をアンマーシャルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。