我有两个struct具有相同的成员,我想将一个 struct 复制到另一个 struct ,请参见下面的伪代码:

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
}

然后我有 struct Foofoo和 struct Barbar,有没有办法从foo复制bar

推荐答案

使用conversion更改类型.下面的代码使用转换将类型Foo的值复制为类型Bar的值:

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

playground example

除struct标记外,仅当底层类型相同时,conversion才起作用.

Go相关问答推荐

运行add. inf,这样我们就可以在app.conf中使用. inf参数了?

如何在使用中介资源时处理函数中的`defer`

Go Regexp:匹配完整的单词或子字符串,或者根本不匹配

无法获取RPC描述符

一次打印用户输入的字符串n次

显示GUI时后台处理功能

如何测试 Zerolog 记录器引发类型错误的日志(log)事件?

htmx 表单 + gin 无法正确读取请求正文

Golang Docker Selenium Chrome

加载 docker 镜像失败

获取 nil 指针类型的 reflect.Value

接受通道和切片的通用函数

在 Golang 模板中计算时间/持续时间

Go cmp - 如何为以 struct 为键的映射定义自定义相等性?

Go 中的 HTTP 请求验证中间件

从 os.stdout 读取

级联调用泛型函数时的泛型类型推断

此代码如何生成内存对齐切片?

如何 Select 前 N 个元素 Gin-Gorm

是否存在一个Go泛型类型约束,该约束捕获了将类型用作映射中的键的能力?