golang struct 数组转换

Mel*_*cuk 0 arrays struct go

我有如下结构:

type Foo struct{
  A string
  B string
}

type Bar struct{
  C string
  D Baz
}

type Baz struct{
  E string
  F string
}
Run Code Online (Sandbox Code Playgroud)

可以说我有[]Bar,如何将其转换为[]Foo

A 应该 C

B 应该 E

Vat*_*ine 5

我不认为有任何“神奇”的方式来进行转换。但是,创建它只是一小段代码。像这样的事情应该可以解决问题。

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
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为最好定义 `acc` 切片的长度和容量,以减少内存分配。因为我们知道:`len(bs)` (2认同)