メンバーが同じで型が異なる構造体の変換
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 := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
上記のコードでは、変換 Bar(foo) により、foo の値が Foo 型から Bar 型に明示的に変換されます。これは、基礎となる型が同一であるため可能です。
Playground Example
<br>package main</p> <p>import "fmt"</p> <p>type 共通構造体{</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Gender int From string To string
}
type Foo struct {
Id string Name string Extra Common
}
type Bar struct {
Id string Name string Extra Common
}
関数 main() {
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo) fmt.Println(bar)
}
出力
{123 Joe {0 "" ""}}
ご覧のとおり、foo の値はに正常にコピーされましたbar.
注:
変換アプローチは、構造体の基になる型が構造体タグを除いて同一である場合にのみ機能します。基礎となる型が異なる場合は、メンバーごとに値を手動でコピーする必要があります。
以上が同じメンバーで型が異なる Go 構造体間で効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。