HTML Diff
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>