ホームページ > バックエンド開発 > Golang > Go の型変換では、メンバーは同じだが型が異なる構造体間で値をコピーできますか?

Go の型変換では、メンバーは同じだが型が異なる構造体間で値をコピーできますか?

Patricia Arquette
リリース: 2024-12-13 03:39:09
オリジナル
470 人が閲覧しました

Can Go's type conversion copy values between structs with identical members but different types?

同一のメンバーと異なる型を持つ構造体のコピー

Go では、2 つの構造体が同じメンバーを共有しているが、さまざまな種類。たとえば、次の構造体定義について考えてみましょう:

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 のインスタンス (foo という名前) と Bar のインスタンス (bar という名前) がある場合、値を foo から bar にコピーできますか?

型変換を使用した解決策

Foo と Bar の基礎となる型は次の点を除いて同一であるため、 struct タグでは、型変換を利用して型を変更できます。これには次の手順が含まれます。

  1. foo という名前の Foo 型の変数を宣言します。
  2. bar という名前の Bar 型の変数を宣言します。
  3. foo の値を割り当てます。タイプを使用してバーを作成する
foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
ログイン後にコピー

プレイグラウンドの例

このソリューションは Go プレイグラウンドでテストできます:
https://go.dev/play /p/j5jL1XFs-zG

注:変換は、基礎となる型が構造体タグを除いて同一である場合にのみ機能します。構造体内のマップ、スライス、配列などの複雑な型では、値をコピーするためのより詳細なアプローチが必要です。

以上がGo の型変換では、メンバーは同じだが型が異なる構造体間で値をコピーできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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