Язык программирования Go сильно изменился с момента его первой публикации в 2009 году. Go 1.18 был долгожданным релизом из-за поддержки дженериков и многих других важных обновлений.

Go выпустила версию 1.18 в марте 2022 года. Вот краткий обзор наиболее значительных изменений.

Поддержка дженериков

Универсальное программирование позволяет вам писать функции, которые могут принимать и возвращать более гибкие типы.

До поддержки дженериков вам нужно было явно указать типы параметров и возвращаемые типы. Простейшая форма дженериков позволяет указывать нетипизированные параметры:

функцияРаспечатать что угодно[Т любой](предметТ) {
ФМТ.Println(предмет)
}

Но дженерики предлагают гораздо больше возможностей, чем просто это. Вы можете объявить практически любую комбинацию и степень детализации типов для параметров. Например, вы можете использовать ограничения package для написания функции, которая работает с любым значением, которое вы можете заказать. Это включает в себя int, числа с плавающей запятой и строки. Вот пример, демонстрирующий синтаксис:

instagram viewer
импорт "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++.

Стоит ли изучать Голанг сегодня?

Читать дальше

ДелитьсяТвитнутьДелитьсяЭл. адрес

Похожие темы

  • Программирование
  • Программирование
  • Языки программирования

Об авторе

Персонал МУО

Подпишитесь на нашу рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться