Firma Google udostępniła podgląd nowej wersji języka programowania Go. Wersja 1.18 dodaje funkcjonalność "ogólnego" programowania z tak zwanymi "sparametryzowanymi" typami.
Mówiąc własnymi słowami, jest to najważniejsza i największa zmiana w języku programowania od czasu wydania wersji Go 1. Ideą generyków jest to, że teraz umożliwia funkcjonalność reprezentującą funkcje i struktury danych poprzez modyfikację typów. Wyklucza to „ogólność” dozwoloną przez zdefiniowanie typu interfejsu jako sposobu abstrahowania rzeczywistych danych wprowadzanych do funkcji.
Google wskazuje, że programiści Go powinni zdać sobie sprawę, że funkcjonalność niewątpliwie doprowadzi do nowych błędów. Powinni zatem podchodzić do tych „generyków” z ostrożnością.
Inne funkcje w Go 1.18 Beta
Oprócz powyższej funkcjonalności nowa wersja zapoznawcza ma również wbudowaną obsługę pisania testów opartych na fuzzingu. Testy te mogą automatycznie znaleźć dane wejściowe, które powodują awarię programów lub zwracają nieprawidłowe odpowiedzi. Go 1.18 Beta oferuje również nowy tryb „Go workspace mode”. Pozwala to programistom na pracę z wieloma modułami Go jednocześnie. Według Google jest to szczególnie przydatne w przypadku dużych projektów.
Co więcej, wersja 1.18 Beta dodaje funkcjonalność z rozszerzonym poleceniem go version -m. To polecenie przechowuje teraz szczegóły jako flagi kompilatora. Program może teraz wysyłać zapytania do własnych szczegółów kompilacji za pomocą polecenia debug.ReadBuildInfo.
Ponadto w wersji zapoznawczej dodano więcej konwencji wywoływania opartej na rejestrach, dostępnej od wersji 1.17. Podczas gdy w poprzedniej wersji ta funkcjonalność była odpowiednia tylko do przyspieszenia kodu Go w systemach x86 i x64, teraz jest również odpowiednia dla systemów opartych na ARM64 i PPC64. Powinno to zapewnić nawet o 20 procent większą prędkość.