为了账号安全,请及时绑定邮箱和手机立即绑定

golang struct 数组转换

golang struct 数组转换

Go
四季花海 2021-11-22 15:46:13
我有如下结构:type Foo struct{  A string  B string}type Bar struct{  C string  D Baz}type Baz struct{  E string  F string}可以说我有[]Bar,如何将其转换为[]Foo?A 应该 CB 应该 E
查看完整描述

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

}


查看完整回答
反对 回复 2021-11-22
?
慕莱坞森

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}]


查看完整回答
反对 回复 2021-11-22
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信