Телеграм

Golang Дайджест

@golang_digest Программирование и разработка
РКН: проверяем Не иноагент
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv

Статистика обновлена 12.11.2026 в 21:42 · 1 просмотр страницы · Хотите больше просмотров?

Подписчики9 492
Охват поста5 472 58% от подписчиков
ERR за месяц57,65%
ERR за 24 часа11,47%

Динамика за 30 дней

Рекламные публикации

Рекламных публикаций не найденоЗа последнее время мы не нашли на площадке ни одного рекламного поста.

Последние публикации

Все посты канала →
Golang Дайджест tg9.5 тыс. подписчиков
Открыть пост ↗
🥂Выпуск про Go 1.27 уже доступен

- На сайте подкаста (тут можно найти ссылки на аудио-площадки)
- На YouTube

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

Кроме того, здесь я обкатал новые подходы к созданию роликов. На выпуск ушло несколько недель работы, и выше я показал лишь малую часть. Многое из этого вы скоро увидите и в моих новых полноценных гайдах.

Все ссылки из выпуска и разбор понятий на сайте подкаста

Участники:
— Николай Тузов
— Дмитрий Матрёничев, автор канала Go Update
— Глеб Яльчик, основатель Pixel Technologies
— Павел Агалецкий, Авито

❤️ Такие нишевые выпуски собирают мало просмотров, а сил я в него вложил несоразмерно много. Поэтому ваша поддержка, как всегда, очень важна — репост, лайк, подписка и подписка на платный канал для спонсоров. Всё это очень помогает моему творчеству.

#gogetpodcast #анонс
👁 1.1 тыс. 🔥 12❤ 3 ↻ 14 вчера в 16:54
Golang Дайджест tg9.5 тыс. подписчиков
Открыть пост ↗
📈 generic collection types: java.util.Collections у нас дома 📈

Один из первых вопросов, который задают новички в Go: «где мои привычные коллекции Set/Map?». Ответ в виде map[type1]type2 их обычно не устраивает по трём причинам:
• Нет встроенных методов.
• Нет возможности определения собственного оператора сравнения.
• Нет, map[comparable]struct{} не является нормальной заменой сетов.

Если первый и последний (особенно последний) это чистая вкусовщина, то вот отсутствие собственных типов в ключах было и остаётся довольно напряжным моментом. Особенно для типов, которые внутри себя содержат указатель, ведь неравны два указателя указывающие на разные участки в памяти, даже если и указывают на семантически одинаковые вещи.

И вот, почти 14 лет от первого релиза языка, и почти 5 лет от релиза дженериков, мы близки к решению этой проблемы. Встречайте:

Уже (почти):
• golang.org/x/exp/collection/hashed.Map: хешмапа поверх maphash.Hasher.
• golang.org/x/exp/collection/hashed.Set: хешсет поверх maphash.Hasher.
• golang.org/x/exp/collection/set: дженерик сет поверх интерфейса comparable. По сути есть просто обёртка вокруг map[T]struct{}, но содержит привычные методы.
• golang.org/x/exp/collection/sorted.[Map, MapSpan, MapSet, Set]: сортируемые словарь и сет. Используют cmp.Ordered поэтому свой компаратор пока определить нельзя, но можно все упорядоченные типы (включая объявленные поверх свои).

Ещё на этапе обсуждения:
• golang.org/x/exp/collection/heap: дженерик куча.
• container/hash: insertion-ordered maps: дженерик словари, итерация по которым, прямо зависит от порядка вставки.

И тут будет логичный вопрос: обобщенные коллекции это конечно круто (хоть и сильно поздно), но где обобщенный интерфейс как в моей любимой Java? Про общие интерфейсы действительно не забыли, однако в лучших традициях Go Team «лучше не сделать ничего, чем сделать плохо» их убрали в тестовый файл для проверок, но не для использования. Аргументируют тем, что нет пока понимания какие требования должны быть обязательными к интерфейсам, а какие опциональны.

В любом случае это хорошее изменение, которое позволит многим дропнуть зависимость от очередного самописного модуля коллекций, который в проект затащили ради одного типа Set.

П.С. Map не стали завозить ибо уже есть обычный map[K]V. У которого, впрочем, нет методов, но есть свободные функции.
П.П.С. Кстати вы знали, что можно связанные списки можно использовать в качестве ключей для map?
👁 2.1 тыс. ❤ 9👍 3🤔 3 ↻ 19 10 ноября