Когда значение ищут по имени
Карта связывает ключ со значением. В Go чтение возвращает также признак наличия, поэтому можно отличить отсутствующую запись от нулевого значения.
package main
import (
"fmt"
"sort"
)
func main() {
zones := map[string]int{"Казань": 3, "Томск": 7}
if offset, ok := zones["Казань"]; ok {
fmt.Println("смещение:", offset)
}
zones["Пермь"] = 5
cities := make([]string, 0, len(zones))
for city := range zones {
cities = append(cities, city)
}
sort.Strings(cities)
for _, city := range cities {
fmt.Println(city, zones[city])
}
}
Порядок обхода map не определён. Для стабильного отчёта соберите ключи отдельно и отсортируйте их. Проверка value, ok := m[key] отличает отсутствующую запись от нулевого значения.