首页 > 后端开发 > Golang > Go 的类型转换可以在具有相同成员但不同类型的结构之间复制值吗?

Go 的类型转换可以在具有相同成员但不同类型的结构之间复制值吗?

Patricia Arquette
发布: 2024-12-13 03:39:09
原创
470 人浏览过

Can Go's type conversion copy values between 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 的实例(名为 foo)和 Bar 的实例(名为 bar),我们可以将值从 foo 复制到 bar 吗?

使用类型转换的解决方案

因为 Foo 和 Bar 的底层类型是相同的除了结构标签之外,我们可以利用类型转换来更改类型。这涉及到以下步骤:

  1. 声明一个名为 foo 的 Foo 类型变量。
  2. 声明一个名为 bar 的 Bar 类型变量。
  3. 为 foo 赋值使用类型来禁止
foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
登录后复制

Playground 示例

您可以在 Go Playground 上测试此解决方案:
https://go.dev/play /p/j5jL1XFs-zG

注意:仅当基础类型相同(结构标记除外)时,转换才有效。结构中的复杂类型(例如映射、切片或数组)需要更详细的方法来复制值。

以上是Go 的类型转换可以在具有相同成员但不同类型的结构之间复制值吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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