Вышел Golang 1.18 Beta 1 — с дженериками
2026-02-21 07:36 Diff

Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.

В блоге Golang 14 декабря 2021 года появилась новость о выходе версии Golang 1.18 Beta 1. Разработчики языка дали возможность программистам протестировать нововведения до основного релиза, который состоится в начале 2022-го.

Главным и долгожданным обновлением стала поддержка дженериков. Для функций и структур теперь можно указывать тип принимаемых аргументов с помощью квадратных скобок.

func PrintAnything[T any](thing T) { fmt.Println(thing) } PrintAnything("Hello!") PrintAnything(42)

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

type Stringer interface { String() string } func Join[T Stringer](things []T) (result string) { for _, v := range things { result += v.String() } return result } result := Join([]int{1, 2, 3}) // выдаст ошибку

Добавили поддержку рабочего режима. Она позволяет разработчикам проще следить за несколькими модулями одновременно. Если раньше нужно было перед коммитом удалять лишние строки в файле go.mod, то теперь можно указать вспомогательные модули в go.work.

Появилась встроенная поддержка fuzzing-тестирования. Оно помогает автоматически тестировать приложения, передавая на вход неожиданные или случайные данные. Подробности можно прочитать в официальном блоге Golang.

Полный список изменений можно посмотреть в пресс-релизе от Google. А дженерики можно безопасно потестить в песочнице.

Вот что об этом думают пользователи Reddit:

«А где летающие свиньи, которые были обещаны? Рад, что эта функция наконец-то вышла в бету. Я не очень знаком с Go, но думаю, что это действительно что-то важное для комьюнити — то, чего ждали уже долгое время».

Скриншот: Reddit

«Я из тех, кто считает, что ЯП не достиг просветления, пока он не уберёт возврат значений полностью. Лучше присваивать значение глобальной переменной и использовать goto, чтобы вернуться назад к вызывающей функции или наверх по коду».

Скриншот: Reddit

PhaseSea1141: «Отлично, теперь дайте нам суммирование типов».


Iuse_arch_btw: «10 лет спустя…»

Скриншот: Reddit
Бесплатный курс по Python ➞
Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу