循环中结构之间的映射

我有一个函数,可以在2个结构之间做一些映射:


Struct1 => Struct2

其中如下:Struct1


type Struct1 struct {

A Transaction `json:"transaction"`

B string      `json:"name"`

...


}

而看起来像这样:Struct2


type Struct2 struct {

C AnotherTransaction `json:"transaction"`

D string      `json:"name"`

...


}

我有一个映射“内部”类型的函数,但我遇到的问题是有一个外部结构,为了方便起见,如下所示:Transaction => AnotherTransactionStruct3


type Struct3 struct {

    Failed   []Struct2 `json:"failed"` // a list of transactions

    Success  []Struct2 `json:"success"`

}


func mapTo(st3 Struct3) Struct1 {

  st1 := Transaction{}

  // the mapping between A => C is quite lengthy

  st1.someField = st3.struct2.anotherField


  return st1 // now mapped


}

我的问题是,从Struct3中,我需要访问Struct2的每个元素并启动上面的映射函数,但我不确定如何去做。我如何遍历每个元素的附加每个元素,并返回现在填充了来自的映射?[]Struct2Struct3mapTo()


慕盖茨4494581
浏览 105回答 1
1回答

30秒到达战场

您可以将 map 函数的参数更新为 struct2,并从函数遍历 struct3 的数组字段,并将每个字段发送到函数。maintoMapfunc main() {    type Struct3 struct {        Failed   []Struct2 `json:"failed"` // a list of transactions        Success  []Struct2 `json:"success"`    }    s3 := &Struct3{        Failed: make([]Struct2, 0),        Success: make([]Struct2, 0),    }    for i := range s3.Success {        // do something with the result value        _ = toMap(s3.Success[i])    }    for i := range s3.Failed {        // do something with the result value        _ = toMap(s3.Failed[i])    }}func mapTo(st2 Struct2) Struct1 {  st1 := Transaction{}  // the mapping between A => C is quite lengthy  st1.someField = st2.anotherField  return st1 // now mapped}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go