Езикът за програмиране Go се е развил много, откакто беше публикуван за първи път през 2009 г. Go 1.18 беше дългоочаквано издание поради поддръжката си за генерични и много други важни актуализации.

Go пусна версия 1.18 през март 2022 г. Ето ниската информация за най-значимите промени.

Поддръжка за генерични продукти

Общото програмиране ви позволява да пишете функции, които могат да приемат и връщат по-гъвкави типове.

Преди да поддържате генерични, трябваше изрично да посочите типове параметри и типове връщане. Най-простата форма на генериците ви позволява да зададете нетипизирани параметри:

функцияPrintAnything[T всеки](нещот) {
fmt.Println(нещо)
}

Но генеричните лекарства предлагат много повече сила от това. Можете да декларирате почти всяка комбинация и детайлност на типа за параметрите. Например, можете да използвате ограничения пакет, за да напишете функция, която работи с всяка стойност, която можете да поръчате. Това включва int, floats и низове. Ето пример, който демонстрира синтаксиса:

instagram viewer
внос "golang.org/x/exp/constraints"

функцияМакс[T ограничения. поръчано](вход[]т) (макст) {
за _, v := диапазон вход {
ако v > макс {
макс = v
}
}

връщане макс
}

Имайте предвид, че тази функция използва общия тип, ограничения. Поръчани, за да декларирате неговия параметър и неговия тип връщане.

Генериците осигуряват несигурност и гъвкавост в кода. Предложението и промените Generics са обратно съвместими.

Fuzz тестване

Фазингът е a техника за тестване на софтуер който валидира програма с грешни, неочаквани или непредвидими данни.

В тестване пакетът въвежда fuzzing в 1.18, така че за да дефинирате fuzz, трябва да го импортирате от стандартната библиотека:

внос "тестване"

След импортиране на тестване пакет, можете да предадете идентификатор на тип * тестване. Ф към тестовата функция.

функцияtestFunc(f *тестване. е) {
// вашият код
}

Fuzzing генерира входни параметри за тестване на код. Резултатът от размиването е непредсказуем, тъй като входните данни не са дефинирани от потребителя. Fuzzing трябва да ви помогне да пишете по-добри тестове за код и да хванете грешки, за които не сте знаели, че съществуват.

Go Workspace Support

Работните пространства са директории с подобен изходен код, които съставляват проект или по-голямо звено. Работните пространства улесняват управлението и отстраняването на грешки в кода чрез групиране на подобен код въз основа на функционалност.

Обикновено подразделяте Go проекти на изходен код (src) и изпълними файлове (кошче). Веригата от инструменти 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, вече можете да пишете общ код, да тествате ефективно с помощта на fuzzing и да превключвате между модулите на Go с помощта на работни пространства. Можете дори да напишете код, който работи във връзка с C и C++ програми.

Заслужава ли си да научите Голанг днес?

Прочетете Следващото

ДялтуитДялелектронна поща

Свързани теми

  • Програмиране
  • Програмиране
  • Програмни езици

За автора

Персонал на MUO

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате