Устройство 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 | Упражнение 1 | easy |
| 2 | Упражнение 2 | easy |