Programmeringsspråket Go har utvecklats mycket sedan det först publicerades 2009. Go 1.18 var en mycket 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 förä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:

funcSkriv ut vad som helst[T någon](sakT) {
fmt.Skriv ut(sak)
}

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 begränsningar paket 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:

importera "golang.org/x/exp/constraints
instagram viewer
"

funcMax[T-begränsningar. Beordrade](inmatning[]T) (maxT) {
för _, v := intervallingång {
om v > max {
max = v
}
}

lämna tillbaka max
}

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

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

Fuzz-testning

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

De testning paketet introducerar fuzzing i 1.18, så för att definiera en fuzz måste du importera den från standardbiblioteket:

importera "testning"

Efter import av testning paket, kan du skicka en identifierare av typen *testning. F till testfunktionen.

functestFunc(f *testning. F) {
// din kod
}

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.

Kommandot för att skapa arbetsytor är:

$ gå och jobba <kommando>

Använd arbete kommando med underkommandon som:

  • i det → skapar en arbetsyta i den angivna katalogen.
  • använda sig av → lägger till en ny modul i go.work, filen go workspace.
  • redigera → redigerar go workspace-filen.
  • synkronisera → synkroniserar beroenden från bygglistan till arbetsytemodulerna.

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

Prestanda förbättringar

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.

De gå bygg kommando, tillsammans med andra relaterade kommandon, stöder -asan flagga, 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

De att få command installerar inte längre paket i modulmedvetet läge, vilket är en stor förändring från när du kom först igång med Go. De gå installera kommando ersätter skaffa sig för att justera modulberoende ö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ändiga detaljer om alla de senaste ändringarna i release notes för Gå 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.

Är Golang värt att lära sig idag?

Läs Nästa

Dela med sigTweetDela med sigE-post

Relaterade ämnen

  • Programmering
  • Programmering
  • Programmeringsspråk

Om författaren

MUO personal

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera