Что нового в Go 1.16

Go 1.16 что нового в новом релизе Golang
Метки: / /

В этой статье вы прочитаете что нового в новом релизе языка программирования Go 1.16, а в нём действительно есть интересные обновления.

Также вам возможно будет интересно новость про обновления языка программирования Rust 1.50, тоже посмотрите.

Что нового в Go 1.16:

Неведений не так много, но они есть, и некоторые из них очень важные, которые наверное многие ждали.

Добавлен пакет «embed»:

Пакет «embed» нужен для встраивания в программу произвольных файлов и каталогов. была представлена новая директория для файлов при компиляции, «//go:embed».

Не большой пример использования, указание в коде комментария «//go:embed test.txt» и объявление следом переменной «var f embed.FS» приведёт в встраиванию файла «test.txt» и возможности обращения к нему через дескриптор f. Подобным образом можно встраивать необходимые для работы файлы с ресурсами или отдельными значениями определённого типа, например, для получения строковой переменной s из файла «version.txt» можно указать:

Новые системы модулей:

По умолчанию теперь требуется использование новой системы модулей с интегрированной поддержкой версионирования, которая пришла на смену средствам управления зависимостями на основе GOPATH.

Переменная окружения GO111MODULE теперь выставлена в значение «on» по умолчанию и режим модулей используется независимо от присутствия файла go.mod в рабочем или родительском каталоге.

В новом режиме сборочные команды, такие как «go build» и «go test», не изменяют содержимое go.mod и go.sum, а команда «go install» обрабатывает аргументы с указанием версии («go install example.com/cmd@v1.0.0»).

Для возвращения старого поведение следует изменить GO111MODULE на значение «auto». Отмечается, что 96% разработчиков уже перешли на новую систему модулей.

Оптимизация:

Проведена оптимизация компоновщика. Для больших проектов компоновка теперь выполняется на 20-25% быстрее и требует на 5-15% меньше памяти.

Добавлена поддержка inline-развёртывания:

В компиляторе добавлена поддержка inline-развёртывания функций с сокращённым определением циклов for, методом значений (method values) и конструкциями type switch.

Добавлена поддержка Apple m1:

Добавлена поддержка систем Apple, оснащённых новым ARM-чипом Apple M1. Добавлены порты netbsd/arm64 и openbsd/mips64 с поддержкой NetBSD на 64-разрядных ARM и OpenBSD на системах MIPS64. В порт linux/riscv64 добавлена поддержка cgo и режима «-buildmode=pie».

Прекращена поддержка x87:

Прекращена поддержка режима компиляции x87 (GO386=387). Поддержка процессоров без инструкций SSE2 теперь доступна через программный режим «GO386=softfloat».

Дополнительно:

Дополнительно можно отметить начало тестирования бета-выпуска языка Dart 2.12, в котором стабилизирован режим безопасного использования значения Null (null safety), который позволят избежать крахов, вызванных попытками использования переменных, значение которых не определено и выставлено в Null.

Режим подразумевает, что переменные не могут иметь неопределённые значения, если им явно не присваивается значение null. В режиме строго учитываются типы переменных, что позволяет компилятору применять дополнительные оптимизации.

Соответствие типов проверяется на этапе компиляции, например, в случае попытки присвоения значения Null переменной с типом, не подразумевающим неопределённое состояние, таким как int, будет выведена ошибка.

Вывод:

В этой статье вы прочитали что нового в новом обновления языка программирования Go 1.16, думаю всем любителем этого языка программирования было интересно и полезно.

Также более подробно про обновление сможете прочитать на официальном сайте.

Источник: OpenNet

Подписываетесь на соц-сети:

Поделится:

Также рекомендую:

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии