Езикът за програмиране Go се е развил много, откакто беше публикуван за първи път през 2009 г. Go 1.18 беше дългоочаквано издание поради поддръжката си за генерични и много други важни актуализации.
Go пусна версия 1.18 през март 2022 г. Ето ниската информация за най-значимите промени.
Поддръжка за генерични продукти
Общото програмиране ви позволява да пишете функции, които могат да приемат и връщат по-гъвкави типове.
Преди да поддържате генерични, трябваше изрично да посочите типове параметри и типове връщане. Най-простата форма на генериците ви позволява да зададете нетипизирани параметри:
функцияPrintAnything[T всеки](нещот) {
fmt.Println(нещо)
}
Но генеричните лекарства предлагат много повече сила от това. Можете да декларирате почти всяка комбинация и детайлност на типа за параметрите. Например, можете да използвате ограничения пакет, за да напишете функция, която работи с всяка стойност, която можете да поръчате. Това включва int, floats и низове. Ето пример, който демонстрира синтаксиса:
внос "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++ програми.
Заслужава ли си да научите Голанг днес?
Прочетете Следващото
Свързани теми
- Програмиране
- Програмиране
- Програмни езици
За автора
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!
Щракнете тук, за да се абонирате