ホームページ  >  記事  >  バックエンド開発  >  異なるフィールドを持つ Go 構造体間で変換するにはどうすればよいですか?

異なるフィールドを持つ Go 構造体間で変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 04:14:02901ブラウズ

 How to Convert Between Go Structs with Different Fields?

Go での構造体の変換

Q: 異なるフィールドを持つ 2 つの構造体があります。 A 型には必須フィールドのみが含まれ、B には追加フィールドが含まれる場合、型 A の変数を型 B に変換するにはどうすればよいですか?この変換を直接実行することは可能ですか? それともフィールドを手動でコピーする必要がありますか?

A: Go では、埋め込み機能を利用して構造体変換を実行できます。これにより、ある構造体のフィールドを別の構造体内にネストすることができます。たとえば、あなたの場合、2 つのフィールド (a と b) を持つ構造体 A と、構造体 A を埋め込んで追加のフィールド (c および場合によってはそれ以上) を追加する構造体 B があります。

A から変換するにはB に対して、単純に B 構造体を作成し、その中に A のインスタンスを埋め込むことができます:

<code class="go">type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}

func main() {
    // create structA of type A
    structA := A{a: 42, b: "foo"}

    // convert to type B
    structB := B{A: structA}

    // access the fields of structB
    fmt.Println(structB.a, structB.b, structB.c) // Output: 42 foo (additional value)
}</code>

以上が異なるフィールドを持つ Go 構造体間で変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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