Добавление к фрагменту, который является значением на карте
Я хочу добавить к срезу, который является значением карты, например, учитывая м map[string][]string
:
if values, exists := m[key]; exists {
values = append(values, v)
// I don't want to call: m[key] = values
} else {
m[key] = []string{ v }
}
Это, очевидно, не работает, поэтому я попытался вместо добавления значения как есть сделать что-то вроде:
valuesPtr := &values
*values = append(values, v)
Но это тоже не работает. Как я могу это сделать?
1 ответ
Тебе этого не сделать.
append
возвращает новый фрагмент, поскольку для завершения добавления может потребоваться изменение размера фрагмента. Вы должны обновить свою карту, чтобы использовать вновь возвращенный фрагмент, что невозможно сделать без ссылки по ключу.