Как создать пустую карту и добавить новые данные в golang? - PullRequest
0 голосов
/ 24 сентября 2018

У меня проблема с созданием пустой карты и добавлением к ней новых данных при зацикливании на другой карте.

Это ошибка, которую я получаю в своей IDE.

enter image description here

вот моя структура данных, которая будет добавлена ​​на карту.

type Outcome struct {
QuestionIndex string
ChoiceIndex   int64
Correct       bool
}

func createEntryOutcome(e *entry.Entry) map[string]interface{} {
entryPicks := e.Live.Picks
outcomes := make(map[string]interface{})
for idx, pick := range entryPicks {
    mappedPick := pick.(map[string]interface{})
    outcomes = append(outcomes, Outcome{
        QuestionIndex: idx,
        ChoiceIndex:   mappedPick["index"].(int64),
        Correct:       mappedPick["correct"].(bool),
    })
}
return outcomes
}

Я хочу, чтобы что-то подобное было сохранено в базе данных.

[
  {
    qIndex: "1",
    cIndex: 1,
    correct: false,
  },
  {
    qIndex: "1",
    cIndex: 1,
    correct: false,
  },
]

Я новичок в Голанге, и любая помощь приветствуется.спасибо

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018
type Outcome struct {
QuestionIndex string
ChoiceIndex   int64
Correct       bool
}

func createEntryOutcome(e *entry.Entry) map[string]interface{} {
entryPicks := e.Live.Picks
var outcomes []Outcome
for idx, pick := range entryPicks {
    mappedPick := pick.(map[string]interface{})
    outcomes = append(outcomes, Outcome{
        QuestionIndex: idx,
        ChoiceIndex:   mappedPick["index"].(int64),
        Correct:       mappedPick["correct"].(bool),
    })
}
return outcomes
}

изменение результаты: = make (map [string] interface {}) to var результатов [] Результат

0 голосов
/ 24 сентября 2018

Как ясно говорит ошибка:

первый аргумент для добавления должен быть slice;имейте map [string] interface {}

, что означает, что вам нужно создать срез, прежде чем добавлять данные к результатам, которые на самом деле являются срезом результатов, как вы упомянули в выходных данных, которые вы хотите.

Функция добавления добавляет элементы x к концу среза s и увеличивает срез, если требуется большая емкость.

Создайте срез outcomes и затем добавьте данные из entryPicks к этому срезу:

outcomes := make([]map[string]interface{})
for idx, pick := range entryPicks {
    mappedPick := pick.(map[string]interface{})
    outcomes = append(outcomes, Outcome{
        QuestionIndex: idx,
        ChoiceIndex:   mappedPick["index"].(int64),
        Correct:       mappedPick["correct"].(bool),
    })
}

, что позволит вам получить желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...