2 回答
TA贡献1830条经验 获得超3个赞
我不认为有任何“神奇”的转换方式。但是,创建它只是一小部分代码。像这样的事情应该可以解决问题。
func BarsToFoos(bs []Bar) []Foo {
var acc []Foo
for _, b := range bs {
newFoo := Foo{A: b.C, B: b.D.E} // pulled out for clarity
acc = append(acc, newFoo)
}
return acc
}
TA贡献1810条经验 获得超4个赞
例如,简洁地最小化内存分配和使用,
package main
import "fmt"
type Foo struct {
A string
B string
}
type Bar struct {
C string
D Baz
}
type Baz struct {
E string
F string
}
func FooFromBar(bs []Bar) []Foo {
fs := make([]Foo, 0, len(bs))
for _, b := range bs {
fs = append(fs, Foo{
A: b.C,
B: b.D.E,
})
}
return fs
}
func main() {
b := []Bar{{C: "C", D: Baz{E: "E", F: "F"}}}
fmt.Println(b)
f := FooFromBar(b)
fmt.Println(f)
}
输出:
[{C {E F}}]
[{C E}]
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报