首页 >后端开发 >Golang >如何在成员相同但类型不同的 Go 结构体之间高效传输数据?

如何在成员相同但类型不同的 Go 结构体之间高效传输数据?

Patricia Arquette
Patricia Arquette原创
2024-12-10 02:18:13470浏览

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

复制具有相同成员和变体类型的结构体

在 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 和 Bar 的实例,我们如何将数据从一个实例传输到另一个实例?

解决方案:转换

由于 Foo 和 Bar 的底层类型除了结构标签之外都是相同的,因此 Go 提供了一个简单的解决方案:转换。通过将 Foo 值转换为 Bar 类型,我们有效地覆盖了 Bar 中的现有数据。代码如下:

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)

示例

让我们在游乐场示例中测试转换: https://go.dev/play/p/1W3EXQVXVhS.

限制

值得注意的是,只有当基础类型相同(结构体除外)时,转换才有效标签。如果底层类型差异很大,则需要创建专用的复制函数。

以上是如何在成员相同但类型不同的 Go 结构体之间高效传输数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn