Как правильно распаковать карту в пользовательскую вложенную структуру в 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)
}
- Вопросы
- Aws-sdk-go
- Как правильно распаковать карту в пользовательскую вложенную структуру в golang (aws sdk-for-go)