复制具有相同成员和不同类型的结构体
在 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 的实例(名为 foo)和 Bar 的实例(名为 bar),我们可以将值从 foo 复制到 bar 吗?
使用类型转换的解决方案
因为 Foo 和 Bar 的底层类型是相同的除了结构标签之外,我们可以利用类型转换来更改类型。这涉及到以下步骤:
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
Playground 示例
您可以在 Go Playground 上测试此解决方案:
https://go.dev/play /p/j5jL1XFs-zG
注意:仅当基础类型相同(结构标记除外)时,转换才有效。结构中的复杂类型(例如映射、切片或数组)需要更详细的方法来复制值。
以上是Go 的类型转换可以在具有相同成员但不同类型的结构之间复制值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!