Go 1.22 a fost deja lansat, aflați despre noile sale funcții și îmbunătățiri

goland

Go este un limbaj de programare concomitent, compilat, cu tastare statică inspirată de sintaxa C.

Noua versiune de Go 1.22, vine la șase luni după versiunea 1.21, cu o serie de modificări notabile la setul de instrumente, timpul de execuție, îmbunătățiri de optimizare, îmbunătățiri ale compilatorului și biblioteci.

Pentru cei care nu știu despre Go, trebuie să vă spun că asta esteEste un limbaj de programare dezvoltat de Google cu participarea comunității ca soluție hibridă care combină performanța ridicată a limbajelor compilate cu avantaje precum limbaje de scripting precum ușurința de scriere a codului, viteza de dezvoltare și protecția împotriva erorilor.

Mergeți la 1.22 știri principale

În această nouă versiune, care este introdusă din Go 1.22, evidențiază două modificări în buclele „for”.Ca Anterior, variabilele declarate de o buclă for au fost create o dată și au fost actualizate la fiecare iterație. În Go 1.22, fiecare iterație a buclei creează noi variabile pentru a evita erorile accidentale de partajare, în plus S-a adăugat suport experimental (GOEXPERIMENT=rangefunc) pentru funcțiile interval la buclele for, care vă permite să specificați o funcție ca iterator și a rezolvat o problemă de lungă durată cu buclele for ceea ce a determinat apelurile corutine să partajeze variabile de buclă între iterații. În plus, buclele for pot acum să circule printre numere întregi. De exemplu:

pachet principal import "fmt" func main() { pentru i := interval 10 { fmt.Println(10 - i) } fmt.Println ("go1.22 decola!") }

O altă schimbare notabilă în această nouă versiune este introducerea capacitatea de a folosi un director «vânzător« care conține dependențele spațiului de lucru. Acum comenzile puteți folosi acest director, care este creat cu `mergeți vânzător de muncă` și este folosit în comenzile de construire când ` este setat-mod` în «vânzător«, aceasta fiind valoarea implicită atunci când există un director «vânzător» în spațiul de lucru.

Este important de reținut că funcționalitatea de `du-te și ia` nu mai este suportat în afara unui modul în modul GOPATH moștenit Cu toate acestea, alte comenzi de compilare, cum ar fi `go build` și `go test` Ei vor continua să lucreze pe termen nelimitat pentru programele vechi GOPATH. În plus, comanda `go mod init` nu va mai încerca să importe cerințele modulelor din fișierele de configurare ale altor «„vânzare” (ca Gopkg.lock).

Go 1.22 introduce a pachet nou io/nesigur care oferă funcționalitate pentru a lucra cu pointeri și memorie nesigură. Acest pachet oferă metode de conversie a indicatorilor către și de la tipuri sigure și nesigure, precum și pentru efectuarea operațiunilor de copiere a memoriei fără verificarea limitelor.

Au continuat lucrările pentru a include optimizări în compilator pe baza rezultatelor pProfilarea codului PGO, y es que acum compilatorul folosește instrumente de devirtualizare pentru a înlocui apelurile indirecte de diferite metode cu execuție extinsă a blocurilor inline. Când PGO a fost activat, modificarea adăugată a îmbunătățit performanța majorității programelor cu 2% până la 14%.

În versiunea de Alegeți Windows, programe care leagă sau încarcă biblioteci Du-te construit cu -buildmode=c-archive o -buildmode=c-shared poate utiliza acum API-ul Event Logging Windows (ETW). prin noile pachete runtime/urme y tracehook, care implementează protocolul de colectare a urmelor evenimentelor Go ca furnizor ETW.

Dintre celelalte schimbări care se remarcă:

  • Comanda du-te la testare -copertă acum tipărește rezumate de acoperire pentru pachetele acoperite care nu au propriile fișiere de testare.
  • os/exec, a fost adăugată capacitatea de a defini atribute de context, permițându-vă să setați valori cum ar fi directorul de lucru, variabilele de mediu și descriptorul fișierului de intrare/ieșire pentru comenzile executate.
  • Gestionarea optimizată a memoriei în timpul rulării, rezultând o creștere a performanței cu 1-3% și o reducere cu 1% a consumului de memorie pentru majoritatea aplicațiilor.
  • El paquete net/http, funcția a fost adăugată CloseIdleConnections către clientul HTTP, care închide toate conexiunile inactive pe care clientul le-a folosit recent
  • O implementare experimentală îmbunătățită (GOEXPERIMENT=newinliner) a mecanismului de inserare a apelurilor a fost adăugată la compilator, care folosește euristica pentru a separa operațiunile importante de cele neimportante.
  • Pachetul a fost adăugat » matematică/rand/v2 » la biblioteca standard, care oferă un API mai consistent și folosește algoritmi mai rapizi pentru a genera numere pseudoaleatoare.
  • El paquete net/http.ServeMux S-a adăugat posibilitatea de a specifica metode și măști în șabloane.

În sfârșit, dacă ești interesat să afle mai multe despre asta, puteți verifica detaliile În următorul link.


Adăugați ca sursă preferată în Google