Go generics спустя три года: стало лучше или так и остались полумерой?

Теги: #Docker#Go
Рейтинг: 73% · 17 голосов
Python, Rust, Go, C++, C#, Java, Kotlin: синтаксис, паттерны проектирования, производительность, многопоточность и сравнение языков.
Аватара пользователя
depechie
Сообщения: 67
Зарегистрирован: 11 май 2026, 11:32

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение depechie »

А на последней версии так же работает? Боюсь обновляться.
👍2 ❤️1 🔥4 😄 🤔2
✔ Лучший ответ сформирован автоматически — 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 спустя три года: стало лучше или так и остались полумерой?

Сообщение arch_coder »

Попробовал — работает, но пришлось ещё права на папку поправить.
👍4 ❤️ 🔥 😄2 🤔1
Аватара пользователя
tastytim
Сообщения: 18
Зарегистрирован: 12 май 2026, 19:20

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение tastytim »

✔ Лучший ответ — сформирован автоматически
Живу с дженериками с 1.18, и самописные Map/Filter выкинул через полгода. В stdlib теперь slices.Contains, slices.SortFunc, maps.Keys, этого хватает на 90% случаев. iter.Seq в 1.23 закрыл тему итераторов. Единственное что реально бесит до сих пор, нельзя метод с type-параметром, приходится городить свободные функции и таскать их отдельным пакетом. В остальном полумера оказалась вполне рабочей.
👍 ❤️ 🔥 😄1 🤔
Аватара пользователя
postgres2
Сообщения: 66
Зарегистрирован: 11 май 2026, 17:56

Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение postgres2 »

Накатал недавно дженерик-контейнеры вместо interface{}-помойки, и наконец-то не приходится кастить туда-сюда. Но до сих пор бесит что нет методов с type-параметрами и comparable работает странно. Кто как живёт с дженериками сейчас?
👍1 ❤️ 🔥1 😄 🤔1
Аватара пользователя
FpgaDev
Сообщения: 43
Зарегистрирован: 12 май 2026, 04:40

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение FpgaDev »

Юзаю в основном для утилит: Map/Filter/Reduce по слайсам и пара generic-структур. Для прикладного кода 90% времени дженерики не нужны, и это норм. Go не превращается в C++ темплейтную мясорубку, и слава богу.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
cohenst1
Сообщения: 92
Зарегистрирован: 11 май 2026, 02:08

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение cohenst1 »

Главная боль — производительность. Дженерики через GC shape stenciling, и для не-указательных типов бывают неожиданные аллокации и непроинлайненные вызовы. Гонял бенч: generic min/max местами медленнее ручной копипасты. Для горячего пути иногда дешевле сгенерить код.
👍2 ❤️ 🔥 😄1 🤔2
Аватара пользователя
kernel_veteran
Сообщения: 63
Зарегистрирован: 11 май 2026, 06:09

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение kernel_veteran »

alex_dev вот про перф не знал, спасибо. То есть для hot path старый добрый go generate с шаблонами всё ещё актуальнее дженериков? Печально.
👍1 ❤️1 🔥1 😄3 🤔
Аватара пользователя
taichi
Сообщения: 17
Зарегистрирован: 12 май 2026, 14:22

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение taichi »

@cohenst1, твой бенч с min/max устарел года на два. С 1.21 min и max это билтины, никакого стенсилинга там нет. А по аллокациям для не-указательных типов покажи конкретный кейс, в 1.22+ инлайнер заметно подтянули. Не спорю, gcshape дает один код на все указатели и девиртуализация страдает, но мантра дженерики медленные уже не работает, надо мерить на своей версии.
👍1 ❤️ 🔥 😄 🤔1
Аватара пользователя
softlurker
Сообщения: 23
Зарегистрирован: 16 май 2026, 13:16

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение softlurker »

Именно. И ещё нет дженерик-методов, из-за этого нормальный fluent-builder или итераторы старого образца не сделать. С range-over-func в 1.23 чуть полегчало, но дыра в дизайне видна.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
Esp32Smith
Сообщения: 10
Зарегистрирован: 17 май 2026, 04:23

Re: Go generics спустя три года: стало лучше или так и остались полумерой?

Сообщение Esp32Smith »

Как человек с двух стульев (Go+Rust): go-шные дженерики это сознательно урезанная версия чтобы не утонуть в сложности компиляции и читаемости. Меня это устраивает. Хочешь монады и HKT — это не сюда, это в Haskell.
👍4 ❤️2 🔥3 😄2 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Языки программирования»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость