golang struct 数组转换

我有如下结构:


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


四季花海
浏览 162回答 2
2回答

牛魔王的故事

我不认为有任何“神奇”的转换方式。但是,创建它只是一小部分代码。像这样的事情应该可以解决问题。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 mainimport "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}]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go