同じメンバーとバリアント型を持つ構造体をコピーする
Go では、メンバーは同じだが型が異なる構造体が存在することは珍しくありません。次の例を考えてみましょう:
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
Foo と Bar のインスタンスがある場合、データを一方から他方に転送するにはどうすればよいでしょうか?
解決策: 変換
構造体タグを除けば、Foo と Bar の基礎となる型は同一であるため、Go は変換という簡単な解決策を提供します。 Foo 値を Bar 型に変換することにより、Bar 内の既存のデータを効果的に上書きします。コードは次のとおりです:
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
例
プレイグラウンドの例で変換をテストしてみましょう: https://go.dev/play/p/1W3EXQVXVhS.
制限事項
変換は、構造体を除いて基になる型が同じ場合にのみ機能することに注意してください。タグ。基になる型が大きく異なる場合は、専用のコピー関数を作成する必要があります。
以上が同じメンバーで型が異なる Go 構造体間でデータを効率的に転送するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。