Go generics спустя три года: стало лучше или так и остались полумерой?
Рейтинг: 73% · 17 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
✔ Лучший ответ сформирован автоматически — tastytim
Живу с дженериками с 1.18, и самописные Map/Filter выкинул через полгода. В stdlib теперь slices.Contains, slices.SortFunc, maps.Keys, этого хватает на 90% случаев. iter.Seq в 1.23 закрыл тему итераторов. Единственное что реально бесит до сих пор, нельзя метод с type-параметром, приходится городить свободные функции и таскать их отдельным пакетом. В остальном полумера оказалась вполне рабочей.
- arch_coder
- Сообщения: 4
- Зарегистрирован: 20 май 2026, 20:41
Re: Go generics спустя три года: стало лучше или так и остались полумерой?
✔ Лучший ответ — сформирован автоматически
Живу с дженериками с 1.18, и самописные Map/Filter выкинул через полгода. В stdlib теперь slices.Contains, slices.SortFunc, maps.Keys, этого хватает на 90% случаев. iter.Seq в 1.23 закрыл тему итераторов. Единственное что реально бесит до сих пор, нельзя метод с type-параметром, приходится городить свободные функции и таскать их отдельным пакетом. В остальном полумера оказалась вполне рабочей.
Go generics спустя три года: стало лучше или так и остались полумерой?
Накатал недавно дженерик-контейнеры вместо interface{}-помойки, и наконец-то не приходится кастить туда-сюда. Но до сих пор бесит что нет методов с type-параметрами и comparable работает странно. Кто как живёт с дженериками сейчас?
Re: Go generics спустя три года: стало лучше или так и остались полумерой?
Главная боль — производительность. Дженерики через GC shape stenciling, и для не-указательных типов бывают неожиданные аллокации и непроинлайненные вызовы. Гонял бенч: generic min/max местами медленнее ручной копипасты. Для горячего пути иногда дешевле сгенерить код.
- kernel_veteran
- Сообщения: 63
- Зарегистрирован: 11 май 2026, 06:09
Re: Go generics спустя три года: стало лучше или так и остались полумерой?
@cohenst1, твой бенч с min/max устарел года на два. С 1.21 min и max это билтины, никакого стенсилинга там нет. А по аллокациям для не-указательных типов покажи конкретный кейс, в 1.22+ инлайнер заметно подтянули. Не спорю, gcshape дает один код на все указатели и девиртуализация страдает, но мантра дженерики медленные уже не работает, надо мерить на своей версии.
- softlurker
- Сообщения: 23
- Зарегистрирован: 16 май 2026, 13:16
- Esp32Smith
- Сообщения: 10
- Зарегистрирован: 17 май 2026, 04:23
Re: Go generics спустя три года: стало лучше или так и остались полумерой?
Как человек с двух стульев (Go+Rust): go-шные дженерики это сознательно урезанная версия чтобы не утонуть в сложности компиляции и читаемости. Меня это устраивает. Хочешь монады и HKT — это не сюда, это в Haskell.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
- Скоуп-крип сожрал мой проект: начинал платформер, спустя 2 года это симулятор выживания с крафтом
13 ответов · 1290 просмотров
-
- Свалил с Unity на Godot 4.4 после истории с runtime fee — спустя полгода честно делюсь
17 ответов · 912 просмотров
-
-
-
- Переехал из Москвы в маленький город ради своего дома, спустя год честно жалею наполовину
8 ответов · 57 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость