Более нормально использовать ok для логического имени переменной.Это эквивалентно:
temp, ok := superhero["Superman"]
if ok {
fmt.Println(temp["realname"], temp["city"])
}
ОК - это правда, если на карте был ключ.Таким образом, в язык встроены две формы доступа к карте и две формы этого утверждения.Лично я думаю, что эта немного более многословная форма с еще одной строкой кода намного понятнее, но вы можете использовать и другую. Так что другая форма будет:
if temp, ok := superhero["Superman"]; ok {
fmt.Println(temp["realname"], temp["city"])
}
Как указано выше.Подробнее см. эффективное движение здесь:
По понятным причинам это называется идиомой «запятая нормально».В этом примере, если ключ присутствует, значение будет установлено соответствующим образом, и ok будет true;если нет, значение будет установлено равным нулю, и ok будет ложным.
Две формы для доступа к картам:
// value and ok set if key is present, else ok is false
value, ok := map[key]
// value set if key is present
value := map[key]