【问题标题】:How to properly unpack a map into a custom nested struct in golang(aws sdk-for-go)如何在golang(aws sdk-for-go)中正确地将地图解包到自定义嵌套结构中
【发布时间】:2017-02-01 02:29:09
【问题描述】:

我有一个包含两个值(Etag 和 PartNumber)的地图,如下所示:

upload_out := make(map[int64]string) //key - PartNumber, value - Etag

我最终想用我的值遍历这个映射并将它们转储到自定义结构的切片中,如下所示:

Parts: []*s3.CompletedPart{
        { // Required
            ETag:       aws.String("ETag1"),
            PartNumber: aws.Int64(PartNumber1),
        },
        { // Required
            ETag:       aws.String("ETag2"),
            PartNumber: aws.Int64(PartNumber2),
        },
        // More values...
    },

我想我的问题是不了解如何正确执行此操作。我下面的尝试循环始终只添加一个键值对。所以并不是所有的值都被解包。

var paths  []*s3.CompletedPart
    for key, val := range upload_out {
        //var unique [10000]*s3.CompletedPart //Attempt unique variable names

         name :=  &s3.CompletedPart{ // this only does one
            ETag:       &val,
            PartNumber: &key,
        }


        paths = append(paths, name)
    }

我们将不胜感激。

【问题讨论】:

    标签: go aws-sdk aws-sdk-go


    【解决方案1】:

    您正在分配循环中keyval 变量的地址,每个变量只有一个。您需要复制这些值,以便为每个条目分配一个新指针。最简单的方法是使用提供的 aws 便利功能:

    for key, val := range upload_out {
        name := &s3.CompletedPart{
            ETag:       aws.String(val),
            PartNumber: aws.Int64(key),
        }
        paths = append(paths, name)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-02
      • 2021-10-14
      • 2021-05-15
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多