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

循环中结构之间的映射

循环中结构之间的映射

Go
慕盖茨4494581 2022-10-04 19:15:31
我有一个函数,可以在2个结构之间做一些映射:Struct1 => Struct2其中如下:Struct1type Struct1 struct {A Transaction `json:"transaction"`B string      `json:"name"`...}而看起来像这样:Struct2type Struct2 struct {C AnotherTransaction `json:"transaction"`D string      `json:"name"`...}我有一个映射“内部”类型的函数,但我遇到的问题是有一个外部结构,为了方便起见,如下所示:Transaction => AnotherTransactionStruct3type 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()
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您可以将 map 函数的参数更新为 struct2,并从函数遍历 struct3 的数组字段,并将每个字段发送到函数。maintoMap


func 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


}


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

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