Основы Go
2026-02-26 20:18 Diff

Полезные приёмы работы с картами

Рассмотрим наиболее полезные приёмы (паттерны) при работе с картами.

Инкремент значений (счётчики)

Карты отлично подходят для подсчёта чего-либо. Если ключ отсутствует, доступ map[key] возвращает нулевое значение:

Установка значения по умолчанию

С помощью проверки наличия ключа можно задать значение по умолчанию, если ключ отсутствует:

Сбор ключей или значений

Чтобы получить список всех ключей карты, используйте maps.Keys():

Чтобы собрать значения:

Если нужно отсортировать ключи:

Вложенные карты (инициализация на лету)

Когда значение карты само является картой, полезен следующий паттерн:

При первом обращении к settings["alice"], если такого ключа ещё нет, Go вернёт nil, но не ошибку. Однако если мы попытаемся сразу обратиться к settings["alice"]["theme"], не проверяя, инициализирована ли внутренняя карта, будет паника времени выполнения.

Этот шаблон — инициализация на лету: если для ключа ещё нет вложенной карты, она создаётся сразу перед использованием.