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

时间:2017-01-26 20:33:18

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

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

package require asn

set f [open "mydata.ber" "rb"]
set myData [read $f]
close $f
# ...
# Data being parsed is now in $myData variable
# I assume that we've reached a string in the parsing of it
# ...
asn::asnGetString myData myString
puts "String parsed was '$myString'"

我最终希望使用我的值循环遍历此映射,并将它们转储到一个自定义结构的片段中,如下所示:

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...
    },

任何帮助做到这一点的人都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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