Безопасный способ добавить ключ на карту в Голанге - PullRequest
0 голосов
/ 25 июня 2018

В связи с этим:

Если запись карты создается во время итерации, эта запись может быть создана во время итерации или могут быть пропущены. Выбор может варьироваться для каждого запись создана и от одной итерации к следующей.

Не безопасно добавлять значения ключей к карте во время итерации:

var m = make(map[string]int)
m["1"] = 1
m["2"] = 2
m["3"] = 3

for k, v := range m {
    if strings.EqualFold( "2", k){
        m["4"] = 4
    }
    fmt.Println(k, v)
}

Иногда выдается ключ "4", иногда нет.

Какой обходной путь, чтобы он всегда создавался?

1 Ответ

0 голосов
/ 25 июня 2018

Создайте еще одну карту с элементами, которые вы хотите добавить к исходной карте, и после итерации вы объедините их.

var m = make(map[string]int)
m["1"] = 1 
m["2"] = 2 
m["3"] = 3 

var n = make(map[string]int)

for k := range m { 
    if strings.EqualFold("2", k) {
        n["4"] = 4 
    }   
}   

for k, v := range n { 
    m[k] = v 
}   

for _, v := range m { 
    fmt.Println(v)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...