„Go“ yra vienu metu veikianti, kompiliuota programavimo kalba su statiniu spausdinimu, įkvėpta C sintaksės.
Naujoji „Go 1.22“ versija pasirodo praėjus šešiems mėnesiams po 1.21 versijos, joje yra daug pastebimų įrankių rinkinio, vykdymo aplinkos, optimizavimo patobulinimų, kompiliatoriaus patobulinimų ir bibliotekų pakeitimų.
Tiems, kurie nėra susipažinę su „Go“, turėčiau paminėti, kad tai yra „Google“ kuriama programavimo kalba, dalyvaujant bendruomenei, kaip hibridinis sprendimas, kuris sujungia aukštą kompiliuojamų kalbų našumą su tokiais privalumais kaip skriptų kalbos, pavyzdžiui, kodo rašymo paprastumas, kūrimo greitis ir apsauga nuo klaidų.
Pagrindinės naujos „Go 1.22“ funkcijos
Šioje naujoje versijoje, pristatytoje iš „Go 1.22“, išsiskiria du „for“ ciklų pakeitimai . Anksčiau „for“ ciklo deklaruojami kintamieji buvo sukuriami vieną kartą ir atnaujinami kiekvienoje iteracijoje. „Go 1.22“ versijoje kiekviena ciklo iteracija sukuria naujus kintamuosius , kad būtų išvengta atsitiktinių bendrinimo klaidų. Be to , buvo pridėtas eksperimentinis diapazono funkcijų palaikymas (GOEXPERIMENT=rangefunc) „for“ cikluose, leidžiantis nurodyti funkciją kaip iteratorių. Taip pat buvo išspręsta ilgalaikė „for“ ciklų problema, dėl kurios korutinų iškvietimai dalydavosi ciklo kintamaisiais tarp iteracijų . Be to, „for“ ciklai dabar gali iteruoti per sveikuosius skaičius. Pavyzdžiui:
paketo pagrindinis importas "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 take off!") }
Kitas pastebimas šios naujos versijos pakeitimas yra galimybė naudoti katalogą „ vendor “ , kuriame yra darbo srities priklausomybės. Komandos dabar gali naudoti šį katalogą, kuris sukuriamas naudojant „ go work vendor“ ir naudojamas kūrimo komandose, kai „ -mod“ nustatyta kaip „ vendor “, kuri yra numatytoji reikšmė, kai darbo srityje yra katalogas „ vendor “.
Svarbu atkreipti dėmesį, kad „ go get“ funkcija nebepalaikoma už modulio ribų senajame „GOPATH“ režime. Tačiau kitos kūrimo komandos, tokios kaip „go build“ ir „go test“, senosiose „GOPATH“ programose veiks neribotą laiką. Be to, komanda „go mod init“ nebebandys importuoti modulio reikalavimų iš kitų tiekėjų įrankių konfigūracijos failų (pvz., „Gopkg.lock“).
„Go 1.22“ versijoje pristatomas naujas „io/unsafe“ paketas , suteikiantis funkcionalumą darbui su rodyklėmis ir nesaugia atmintimi . Šis paketas siūlo metodus, kaip konvertuoti rodykles iš saugių į nesaugius tipus, taip pat atlikti atminties kopijavimo operacijas netikrinant ribų.
Toliau buvo dirbama siekiant optimizuoti kompiliatorius, remiantis PGO kodo profiliavimo rezultatais . Kompiliatorius dabar naudoja devirtualizacijos įrankius, kad pakeistų netiesioginius įvairių metodų iškvietimus išplėstų eilutinių blokų vykdymu. Įjungus PGO, šis pakeitimas pagerino daugumos programų našumą 2–14 %.
„Windows“ versijoje esančioje „Go“ programos, kurios susieja arba įkelia „Go“ bibliotekas, sukurtas naudojant „-buildmode=c-archive“ arba „-buildmode=c-shared“ , dabar gali naudoti „Windows“ įvykių registravimo (ETW) API per naujus „runtime/trace“ ir „tracehook“ paketus , kurie įdiegia „Go“ įvykių sekimo rinkimo protokolą kaip ETW teikėją.
Iš kitų išsiskiriančių pakeitimų:
- Įsakymas eik išbandyti -dangtelis dabar spausdina padengtų paketų, kurie neturi savo bandomųjų failų, aprėpties santraukas.
- os/exec, buvo pridėta galimybė apibrėžti konteksto atributus, leidžiančius nustatyti tokias reikšmes kaip darbo katalogas, aplinkos kintamieji ir vykdomų komandų įvesties / išvesties failo aprašas.
- Optimizuotas atminties valdymas vykdymo metu, todėl daugumos programų našumas padidėja 1–3%, o atminties suvartojimas sumažėja 1%.
- El paquete net/http, funkcija buvo pridėta CloseIdleConnections HTTP klientui, kuris uždaro visus neaktyvius ryšius, kuriuos klientas neseniai naudojo
- Į kompiliatorių įtrauktas patobulintas eksperimentinis skambučių įterpimo mechanizmo įgyvendinimas (GOEXPERIMENT = newwinliner), kuris naudoja euristiką svarbioms operacijoms atskirti nuo nesvarbių.
- Paketas pridėtas » matematika/rand/v2 » į standartinę biblioteką, kuri siūlo nuoseklesnę API ir naudoja greitesnius algoritmus pseudoatsitiktiniams skaičiams generuoti.
- El paquete net/http.ServeMux Pridėta galimybė šablonuose nurodyti metodus ir kaukes.
Galiausiai, jei norite sužinoti daugiau, išsamią informaciją galite rasti šioje nuorodoje.