[英]golang struct array conversion
我有如下結構:
type Foo struct{
A string
B string
}
type Bar struct{
C string
D Baz
}
type Baz struct{
E string
F string
}
假設我有[]Bar
,如何將其轉換為[]Foo
?
A
應該是C
B
應該是E
我不認為有任何“神奇”的方式來進行轉換。 但是,創建它只是一小部分代碼。 像這樣的事情應該可以解決問題。
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
}
例如,簡潔地最小化內存分配和使用,
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}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.