簡體   English   中英

golang struct 數組轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM