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

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

Patricia Arquette
发布: 2024-12-10 02:18:13
原创
469 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板