Go 1.22 har allerede blitt utgitt, lær om nye funksjoner og forbedringer

goland

Go er et samtidig, kompilert programmeringsspråk med statisk skriving inspirert av C-syntaks.

Den nye versjonen av Go 1.22 kommer seks måneder etter versjon 1.21, med en rekke bemerkelsesverdige endringer i verktøysettet, kjøretiden, optimaliseringsforbedringer, kompilatorforbedringer og biblioteker.

For de som ikke er kjent med Go, bør jeg nevne at det er et programmeringsspråk som utvikles av Google med deltakelse fra fellesskapet som en hybridløsning som kombinerer den høye ytelsen til kompilerte språk med fordeler som skriptspråk, som enkel kodeskriving, utviklingshastighet og feilbeskyttelse.

De viktigste nye funksjonene i Go 1.22

I denne nye versjonen, introdusert fra Go 1.22, skiller to endringer i "for"-løkker seg ut . Tidligere ble variabler deklarert av en "for"-løkke opprettet én gang og oppdatert ved hver iterasjon. I Go 1.22 oppretter hver iterasjon av løkken nye variabler for å forhindre utilsiktede delingsfeil. I tillegg ble eksperimentell støtte (GOEXPERIMENT=rangefunc) for rekkeviddefunksjoner i "for"-løkker lagt til, slik at en funksjon kan spesifiseres som en iterator. Et langvarig problem med "for"-løkker som forårsaket at korutinekall delte løkkevariabler mellom iterasjoner ble også løst . Videre kan "for"-løkker nå iterere over heltall. For eksempel:

pakke hovedimport "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 tar av!") }

En annen bemerkelsesverdig endring i denne nye versjonen er introduksjonen av muligheten til å bruke en " vendor " -katalog som inneholder arbeidsområdeavhengigheter. Kommandoer kan nå bruke denne katalogen, som opprettes med ` go work vendor` og brukes i byggekommandoer når ` -mod` er satt til " vendor ", som er standard når en " vendor "-katalog finnes i arbeidsområdet.

Det er viktig å merke seg at ` go get`- funksjonaliteten ikke lenger støttes utenfor en modul i eldre GOPATH- modus. Andre byggekommandoer som `go build` og `go test` vil imidlertid fortsette å fungere på ubestemt tid for eldre GOPATH-programmer. I tillegg vil `go mod init`- kommandoen ikke lenger forsøke å importere modulkrav fra konfigurasjonsfiler til andre leverandørverktøy (som Gopkg.lock).

Go 1.22 introduserer en ny io/unsafe -pakke som gir funksjonalitet for å jobbe med pekere og usikkert minne . Denne pakken tilbyr metoder for å konvertere pekere fra sikre til usikre typer, samt for å utføre minnekopieringsoperasjoner uten å sjekke grenser.

Arbeidet med å innlemme kompilatoroptimaliseringer basert på resultatene fra PGO-kodeprofilering fortsatte. Kompilatoren bruker nå devirtualiseringsverktøy for å erstatte indirekte kall fra ulike metoder med utførelse av utvidede innebygde blokker. Da PGO ble aktivert, forbedret denne endringen ytelsen til de fleste programmer med mellom 2 % og 14 %.

I Windows-versjonen av Go kan programmer som lenker til eller laster inn Go-biblioteker bygget med -buildmode=c-archive eller -buildmode=c-shared nå bruke Windows Event Logging (ETW) API gjennom de nye runtime/trace- og tracehook- pakkene , som implementerer Go-protokollen for innsamling av hendelsessporing som en ETW-leverandør.

Av de andre endringene som skiller seg ut:

  • Kommandoen gå test -cover skriver nå ut dekningssammendrag for dekkede pakker som ikke har egne testfiler.
  • os/exec, muligheten til å definere kontekstattributter er lagt til, slik at du kan angi verdier som arbeidskatalogen, miljøvariabler og input/output filbeskrivelse for utførte kommandoer.
  • Optimalisert minneadministrasjon i kjøretid, noe som resulterer i en ytelsesøkning på 1-3 % og en reduksjon på 1 % i minneforbruk for de fleste applikasjoner.
  • El paquete net/http, er funksjonen lagt til CloseIdleConnections til HTTP-klienten, som lukker alle inaktive tilkoblinger som klienten nylig har brukt
  • En forbedret eksperimentell implementering (GOEXPERIMENT=newinliner) av anropsinnsettingsmekanismen er lagt til kompilatoren, som bruker heuristikk for å skille viktige operasjoner fra ikke-viktige.
  • Pakken er lagt til » matematikk/rand/v2 » til standardbiblioteket, som tilbyr et mer konsistent API og bruker raskere algoritmer for å generere pseudorandomtall.
  • El paquete net/http.ServeMux Lagt til muligheten til å spesifisere metoder og masker i maler.

Til slutt, hvis du er interessert i å lære mer, kan du finne detaljene på følgende lenke.


Legg til som foretrukket kilde i Google