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