我有一個像下面結構:golang結構數組轉換
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
我有一個像下面結構:golang結構數組轉換
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
}
例如,簡明地mininimizing存儲器分配和使用,
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}]
這些結構在語義上是不同的。請描述你爲什麼要進行這種轉換,也許你可以使用一個接口。 –
我正在使用第三方軟件包的東西,這個軟件包返回一個巨大的結構,我想將此結構轉換爲我的本地結構插入到數據庫。 –