Устройство map

map[K]V — хеш-таблица с ключами типа K и значениями типа V. Ключ должен быть сравнимым (comparable): числа, строки, bool, указатели, массивы. Срезы и другие карты ключами быть не могут.

// литерал
m := map[string]int{
    "alice": 30,
    "bob":   25,
}

// make (пустая, готова к записи)
scores := make(map[string]int)

Объявленная, но не инициализированная карта (var m map[string]int) равна nil. Читать из nil-карты можно (возвращает нулевое значение), а писать — паника.

Обращение к несуществующему ключу возвращает нулевое значение типа V, а не ошибку:

m := map[string]int{"a": 1}
fmt.Println(m["b"])   // 0

Чтобы отличить «ключ есть, значение 0» от «ключа нет»:

v, ok := m["b"]
if !ok {
    fmt.Println("нет такого ключа")
}

ЗаданиеСложность
1Упражнение 1easy
2Упражнение 2easy