Основы Go
Теория: Практики использования карт
Полезные приёмы работы с картами
Рассмотрим наиболее полезные приёмы (паттерны) при работе с картами. В некоторых случаях мы будем использовать библиотеку samber/lo, которая предоставляет готовые функции для работы с коллекциями и картами.
Инкремент значений (счётчики)
Карты отлично подходят для подсчёта чего-либо. Если ключ отсутствует, доступ map[key] возвращает нулевое значение:
Установка значения по умолчанию
С помощью lo.GetOrElse() можно задать значение по умолчанию, если ключ отсутствует:
Сбор ключей или значений
Чтобы получить список всех ключей карты, используйте maps.Keys():
Чтобы собрать значения:
Если нужно отсортировать ключи:
Вложенные карты (инициализация на лету)
Когда значение карты само является картой, полезен следующий паттерн:
При первом обращении к settings["alice"], если такого ключа ещё нет, Go вернёт nil, но не ошибку.
Однако если мы попытаемся сразу обратиться к settings["alice"]["theme"], не проверяя, инициализирована ли внутренняя карта, будет паника времени выполнения.
Этот шаблон — инициализация на лету: если для ключа ещё нет вложенной карты, она создаётся сразу перед использованием.





