Компания Google выпустила превью новой версии языка программирования Go. Версия 1.18 добавляет функциональность для "универсального" программирования с так называемыми "параметризованными" типами.
По их собственным словам, это самое важное и самое большое изменение в языке программирования с момента выпуска Go версии 1. Идея дженериков заключается в том, что теперь они обеспечивают функциональность для представления функций и структур данных путем изменения типов. Это исключает «общность», допускаемую определением типа интерфейса как способа абстрагирования фактических данных, передаваемых функции.
Google указывает, что разработчики Go должны понимать, что функциональность, несомненно, приведет к новым ошибкам. Поэтому им следует подходить к этим «дженерикам» с осторожностью.
Другие функции в Go 1.18 Beta
В дополнение к вышеперечисленным функциям новая предварительная версия также имеет встроенную поддержку написания тестов на основе фаззинга. Эти тесты могут автоматически находить входные данные, которые вызывают сбой программы или возвращают неверные ответы. Go 1.18 Beta также предлагает новый «режим рабочей области Go». Это позволяет программистам работать с несколькими модулями Go одновременно. По словам Google, это особенно полезно для крупных проектов.
Кроме того, в версии 1.18 Beta добавлена функциональность расширенной команды go version -m. Эта команда теперь сохраняет детали в виде флагов компилятора. Теперь программа может запрашивать сведения о своей сборке с помощью команды debug.ReadBuildInfo.
Кроме того, в предварительную версию добавлено больше соглашений о вызовах на основе регистров, доступных начиная с Go 1.17. Если в предыдущей версии эта функция подходила только для ускорения кода Go в системах x86 и x64, то теперь она также подходит для систем на базе ARM64 и PPC64. Это должно обеспечить до 20 процентов больше скорости.