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