首页 > 解决方案 > 当第二个结构使用字段子集时,将结构列表转换为另一个结构的列表

问题描述

我有两个结构,FooBar. Bar使用Foo字段的子集:

type Foo struct {
    Id    string
    Name  string
    Extra string
}

type Bar struct {
    Id   string
    Name string
}

我想将Foos转换为Bars。我目前正在这样做:

bars := []Bar

for _, foo = range foos {
    bars = append(
        bars,
        Bar{Id: foo.Id, Name: foo.name}
    )
}

在 Go 中有没有更好的方法来做到这一点?

标签: gostruct

解决方案


你可以嵌入 BarFoo.

type Foo struct {
    Bar
    Extra string
}

type Bar struct {
    Id   string
    Name string
}
var bars []Bar

for _, foo = range foos {
    bars = append(bars, foo.Bar)
}

推荐阅读