Programmeringsspråket Go har utvecklats mycket sedan det först publicerades 2009. Go 1.18 var en efterlängtad version på grund av dess stöd för generika och många andra viktiga uppdateringar.

Go släppte version 1.18 i mars 2022. Här är nedre delen av de viktigaste ändringarna.

Stöd för Generics

Generisk programmering låter dig skriva funktioner som kan acceptera och returnera mer flexibla typer.

Innan stöd för generika behövde du uttryckligen ange parametertyper och returtyper. Den enklaste formen av generika låter dig specificera otypade parametrar.

Men generika erbjuder mycket mer kraft än bara detta. Du kan deklarera nästan vilken kombination och granularitet av typ som helst för parametrar. Du kan till exempel använda constraints-paketet för att skriva en funktion som fungerar på alla värden som du kan beställa. Detta inkluderar int, floats och strängar. Här är ett exempel som visar syntaxen.

Observera att den här funktionen använder den generiska typen, constraints.Ordered, för att deklarera dess parameter och dess returtyp.

Generika ger osäkerhet och flexibilitet i kod. Generics förslag och ändringar är bakåtkompatibla.

Fuzz-testning

Fuzzing är en mjukvarutestteknik som validerar ett program med felaktiga, oväntade eller oförutsägbara data.

Testpaketet introducerar fuzzing i 1.18, så för att definiera en fuzz måste du importera den från standardbiblioteket.

Fuzzing genererar indataparametrar för att testa kod. Resultatet av fuzzing är oförutsägbart eftersom ingångarna inte är användardefinierade. Fuzzing borde hjälpa dig att skriva bättre kodtester och fånga buggar som du inte visste fanns.

Gå Workspace Support

Arbetsytor är kataloger med liknande källkod som utgör ett projekt eller en större enhet. Arbetsytor gör det enklare att hantera och felsöka kod genom att gruppera liknande kod baserat på funktionalitet.

Konventionellt delar du upp Go-projekt i källkod (src) och körbara filer (bin). Go-verktygskedjan bygger källkod från den förra till körbara filer i den senare. Go-arbetsytor tillåter utvecklare att arbeta med flera arbetsytor med Go-moduler med en viss huvudmodul.

Inkluderandet av arbetsytor att gå skulle öka produktiviteten som planerat för att utveckla språket.

Prestanda förbättringar

Go version 1.18 stöder nu ARM64 Apple M1 och 64-bitars PowerPC i ABI-anropskonventionen. Detta resulterar i över 10 % vinst i CPU-prestanda för användare av dessa enheter.

Deklarerade och oanvända variabler i funktioner loggas nu som fel vid programkompilering.

Go build-kommandot, tillsammans med andra relaterade kommandon, stöder flaggan -asan, som stöder interoperabilitet med C/C++. Detta kommer att hjälpa Go-utvecklare att använda Go-program med C- och C++-program.

Andra viktiga uppdateringar

Kommandot go get installerar inte längre paket i modulmedvetet läge, vilket är en stor förändring från när du först började med Go. Kommandot go install ersätter get för att justera modulberoenden över arbetsytor.

Eftersom typkontrollen nu hanterar generika kan felmeddelanden logga annorlunda än i tidigare versioner.

Tiden det tar för program att kompilera kan vara långsammare i 1.18. Men detta kommer inte att påverka körtiden när Go har kompilerat ditt program.

Du kan hitta fullständig information om alla de senaste ändringarna i versionskommentarerna för Go 1.18.

Go 1.18 har flera olika tillägg

Med Go 1.18 kan du nu skriva generisk kod, testa effektivt med fuzzing och växla mellan Go-moduler med hjälp av arbetsytor. Du kan till och med skriva kod som fungerar tillsammans med C- och C++-program.

Leave a Reply

Your email address will not be published. Required fields are marked *