ホームページ > バックエンド開発 > Golang > 同じメンバーで型が異なる Go 構造体間でデータを効率的に転送するにはどうすればよいですか?

同じメンバーで型が異なる Go 構造体間でデータを効率的に転送するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-10 02:18:13
オリジナル
468 人が閲覧しました

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

同じメンバーとバリアント型を持つ構造体をコピーする

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

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