TGViewer
Типичный программист Типичный программист @tproger · 78.3K subscribers
Post #14740 7.34K
В Go 1.27 появились дженерик-методы, и часть сообщества считает это концом простоты

Go задумывался как язык, который учат за выходные: минимум синтаксиса, никаких хитростей. В 1.18 в него добавили дженерики, но только для функций и типов — методам параметры типа не полагались. Аргумент был технический: дженерик-методы интерфейсов трудно скомпилировать эффективно, а раз так, то и конкретным методам они ни к чему.

26 августа Марк Фримен из команды Go объяснил в блоге, почему это решение пересмотрели. Методы служат не только для реализации интерфейсов: они ещё и способ сгруппировать функциональность вокруг типа. Раньше преобразование списка приходилось выносить в пакетную функцию и писать вызовы «наизнанку»: MapList(MapList(NewList(0, 2, 4), add(2)), divideBy(2)). В 1.27 то же пишется слева направо: NewList(0, 2, 4).Map(add(2)).Map(divideBy(2)).

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

Через два дня в r/golang собрал 176 голосов пост «Я ненавижу, куда движется Go»: автор жалуется, что видит в коде req.GetSomething.OrDefault(2) и что язык превращается в Java с Kotlin. Голосов «за» там 69%, для r/golang это необычно спорно, и верхние комментарии на стороне дженериков: «итераторы и дженерики улучшают читаемость и намерение кода», «никто не заставляет вас эти возможности использовать».

#go #обсуждение
  • 👍 18
  • ❤ 5
  • 🔥 4
  • 😁 3
  • 🎉 2
  • 👻 2
  • ✍ 1
  • 👎 1
  • 😍 1
More from @tproger
  1. Sep 20, 2026Как повторное использование ReverseProxy ускорило прокси на Go в 3,8 раза Автор нагрузил с…
  2. Sep 20, 2026Мы вернулись из Суздаля с новым взглядом на магазин у дома Были на tech-туре MAGNIT TECH «…
  3. Sep 19, 2026Вопрос на разогрев: что из этого появилось раньше — ICQ, MySpace или Nokia 3310? Если заду…
  4. Sep 19, 2026Почему тип указателя не гарантирует безопасность памяти Указатель сохраняет тип, даже когд…
  5. Sep 19, 2026В Суздаль за DevOps Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT T…
  6. Sep 18, 2026Как Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1 Big Pineapple за сервисом 1.1.1…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →