如何在 golang (aws sdk-for-go) 中正确地将地图解压到自定义嵌套结构中

How to properly unpack a map into a custom nested struct in golang(aws sdk-for-go)

我有一个包含两个值(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)
    }

如能提供正确的帮助,我们将不胜感激。

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

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