2017-01-26 3 views
1

У меня есть карта, которая содержит два значения (Etag & PartNumber) следующим образом:Как правильно распаковать карту в пользовательской вложенной структуры в golang (AWS СДК-в-ходу)

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) 
    } 

Любая помощь, выполняющая это право, будет оценена по достоинству.

ответ

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) 
} 
+0

Спасибо, я вижу все детали, появляющиеся сейчас. – Godfrey

Смежные вопросы