2 added
2 removed
Original
2026-01-01
Modified
2026-02-26
1
<h2>Полезные приёмы работы с картами</h2>
1
<h2>Полезные приёмы работы с картами</h2>
2
-
<p>Рассмотрим наиболее полезные приёмы (паттерны) при работе с картами. В некоторых случаях мы будем использовать библиотеку<a>samber/lo</a>, которая предоставляет готовые функции для работы с коллекциями и картами.</p>
2
+
<p>Рассмотрим наиболее полезные приёмы (паттерны) при работе с картами.</p>
3
<h2>Инкремент значений (счётчики)</h2>
3
<h2>Инкремент значений (счётчики)</h2>
4
<p>Карты отлично подходят для подсчёта чего-либо. Если ключ отсутствует, доступ map[key] возвращает нулевое значение:</p>
4
<p>Карты отлично подходят для подсчёта чего-либо. Если ключ отсутствует, доступ map[key] возвращает нулевое значение:</p>
5
<h2>Установка значения по умолчанию</h2>
5
<h2>Установка значения по умолчанию</h2>
6
-
<p>С помощью lo.GetOrElse() можно задать значение по умолчанию, если ключ отсутствует:</p>
6
+
<p>С помощью проверки наличия ключа можно задать значение по умолчанию, если ключ отсутствует:</p>
7
<h2>Сбор ключей или значений</h2>
7
<h2>Сбор ключей или значений</h2>
8
<p>Чтобы получить список всех ключей карты, используйте maps.Keys():</p>
8
<p>Чтобы получить список всех ключей карты, используйте maps.Keys():</p>
9
<p>Чтобы собрать значения:</p>
9
<p>Чтобы собрать значения:</p>
10
<p>Если нужно отсортировать ключи:</p>
10
<p>Если нужно отсортировать ключи:</p>
11
<h2>Вложенные карты (инициализация на лету)</h2>
11
<h2>Вложенные карты (инициализация на лету)</h2>
12
<p>Когда значение карты само является картой, полезен следующий паттерн:</p>
12
<p>Когда значение карты само является картой, полезен следующий паттерн:</p>
13
<p>При первом обращении к settings["alice"], если такого ключа ещё нет, Go вернёт nil, но не ошибку. Однако если мы попытаемся сразу обратиться к settings["alice"]["theme"], не проверяя, инициализирована ли внутренняя карта, будет паника времени выполнения.</p>
13
<p>При первом обращении к settings["alice"], если такого ключа ещё нет, Go вернёт nil, но не ошибку. Однако если мы попытаемся сразу обратиться к settings["alice"]["theme"], не проверяя, инициализирована ли внутренняя карта, будет паника времени выполнения.</p>
14
<p>Этот шаблон - инициализация на лету: если для ключа ещё нет вложенной карты, она создаётся сразу перед использованием.</p>
14
<p>Этот шаблон - инициализация на лету: если для ключа ещё нет вложенной карты, она создаётся сразу перед использованием.</p>