Лучший способ хранить ссылки на карте - PullRequest
0 голосов
/ 07 января 2020

Что может быть лучше, чем хранить ссылки на структуры на карте? Прямо сейчас я использую анонимную функцию, чтобы все ключи карты не заканчивались одной и той же ссылкой. Я уверен, что должен быть более элегантный способ сделать это.

m := make(map[string]*Result)
for result := range results {
    func(r Result) {
        m[r.Key] = &r
    }(result)
}

Обновление: results - это канал простых структур

Ответы [ 2 ]

4 голосов
/ 07 января 2020

Используйте следующее, чтобы сохранить указатель на вновь присвоенное значение:

m := make(map[string]*Result)
for r := range results {
    r := r
    m[r.Key] := &r
}
2 голосов
/ 07 января 2020

Если вы пытаетесь скопировать структуру результата:

m := make(map[string]*Result)
for result := range results {
    result:=result
    m[result.Key] = &result
}
...