我的地图包含两个值(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...
},
任何帮助做到这一点的人都将不胜感激。
答案 0 :(得分:1)
您正在循环中分配key
和val
变量的地址,每个变量只有一个变量。您需要复制这些值,以便为每个条目分配新指针。最简单的方法是使用提供的aws便利功能:
for key, val := range upload_out {
name := &s3.CompletedPart{
ETag: aws.String(val),
PartNumber: aws.Int64(key),
}
paths = append(paths, name)
}