Язык программирования Go сильно изменился с момента его первой публикации в 2009 году. Go 1.18 был долгожданным релизом из-за поддержки дженериков и многих других важных обновлений.
Go выпустила версию 1.18 в марте 2022 года. Вот краткий обзор наиболее значительных изменений.
Поддержка дженериков
Универсальное программирование позволяет вам писать функции, которые могут принимать и возвращать более гибкие типы.
До поддержки дженериков вам нужно было явно указать типы параметров и возвращаемые типы. Простейшая форма дженериков позволяет указывать нетипизированные параметры:
функцияРаспечатать что угодно[Т любой](предметТ) {
ФМТ.Println(предмет)
}
Но дженерики предлагают гораздо больше возможностей, чем просто это. Вы можете объявить практически любую комбинацию и степень детализации типов для параметров. Например, вы можете использовать ограничения package для написания функции, которая работает с любым значением, которое вы можете заказать. Это включает в себя int, числа с плавающей запятой и строки. Вот пример, демонстрирующий синтаксис:
импорт "golang.org/x/exp/ограничения"
функцияМаксимум[Т ограничений. Приказал](вход[]Т) (МаксимумТ) {
для _, v := диапазон ввода {
если v > Максимум {
макс = v
}
}
возврат Максимум
}
Обратите внимание, что эта функция использует общий тип, ограничения. Приказал, чтобы объявить его параметр и возвращаемый тип.
Обобщения обеспечивают неопределенность и гибкость кода. Предложение и изменения Generics обратно совместимы.
Нечеткое тестирование
Фаззинг – это методика тестирования программного обеспечения который проверяет программу с ошибочными, неожиданными или непредсказуемыми данными.
тестирование package представляет фаззинг в версии 1.18, поэтому для определения фаззинга вам необходимо импортировать его из стандартной библиотеки:
импорт "тестирование"
После импорта тестирование пакет, вы можете передать идентификатор типа * тестирование. Ф к тестовой функции.
функцияtestFunc(ф * тестирование. Ф) {
// ваш код
}
Фаззинг генерирует входные параметры для тестирования кода. Результат фаззинга непредсказуем, поскольку входные данные не определяются пользователем. Фаззинг должен помочь вам писать более качественные тесты кода и выявлять ошибки, о существовании которых вы не знали.
Поддержка рабочего пространства Go
Рабочие пространства — это каталоги аналогичного исходного кода, которые составляют проект или более крупную единицу. Рабочие области упрощают управление кодом и его отладку, группируя похожий код на основе функциональности.
Обычно вы делите проекты Go на исходный код (источник) и исполняемые файлы (мусорное ведро). Цепочка инструментов Go создает исходный код из первого в исполняемые файлы во втором. Рабочие области Go позволяют разработчикам работать с несколькими рабочими областями, используя модули Go с определенным основным модулем.
Команда для создания рабочих пространств:
$ иди работай <команда>
Использовать Работа команда с такими подкомандами, как:
- в этом → создает рабочую область в указанном каталоге.
- использовать → добавляет новый модуль в go.work, файл рабочего пространства go.
- редактировать → редактирует файл рабочей области go.
- синхронизировать → синхронизирует зависимости из списка сборки с модулями рабочей области.
Включение рабочих пространств на ходу повысит производительность, как и планировалось при разработке языка.
Улучшения производительности
Идти версия 1.18 теперь поддерживает ARM64 Apple M1 и 64-разрядный PowerPC в соглашении о вызовах ABI. Это приводит к увеличению производительности процессора более чем на 10% для пользователей этих устройств.
Объявленные и неиспользуемые переменные в функциях теперь регистрируются как ошибки при компиляции программы.
иди строй Команда, наряду с другими родственными командами, поддерживает -асан флаг, который поддерживает взаимодействие с C/C++. Это поможет разработчикам Go использовать программы Go с программами C и C++.
Другие важные обновления
иди возьми команда больше не устанавливает пакеты в режиме с поддержкой модулей, что является большим изменением по сравнению с тем, когда вы впервые начал работать с Go. иди устанавливай команда заменяет получить для настройки зависимостей модулей между рабочими пространствами.
Поскольку средство проверки типов теперь обрабатывает обобщения, сообщения об ошибках могут записываться иначе, чем в предыдущих версиях.
Время, необходимое для компиляции программ, может быть медленнее в версии 1.18. Но это не повлияет на время выполнения после того, как Go скомпилирует вашу программу.
Вы можете найти полную информацию обо всех последних изменениях в примечаниях к выпуску для Перейти 1.18.
Go 1.18 имеет несколько разнообразных дополнений
Используя Go 1.18, теперь вы можете писать общий код, эффективно тестировать с помощью фаззинга и переключаться между модулями Go с помощью рабочих пространств. Вы даже можете написать код, который работает в сочетании с программами на C и C++.
Стоит ли изучать Голанг сегодня?
Читать дальше
Похожие темы
- Программирование
- Программирование
- Языки программирования
Об авторе
Подпишитесь на нашу рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться