Go je sočasen, preveden programski jezik s statičnim tipkanjem, ki ga je navdihnila sintaksa C.
Nova različica Go 1.22 prihaja šest mesecev po različici 1.21, s številnimi opaznimi spremembami v naboru orodij, izvajalnem okolju, izboljšavah optimizacije, izboljšavah prevajalnika in knjižnicah.
Za tiste, ki ne poznajo jezika Go, naj omenim, da gre za programski jezik, ki ga razvija Google s sodelovanjem skupnosti kot hibridno rešitev, ki združuje visoko zmogljivost prevedenih jezikov s prednostmi, kot so skriptni jeziki, kot so enostavnost pisanja kode, hitrost razvoja in zaščita pred napakami.
Glavne novosti Go 1.22
V tej novi različici, uvedeni iz Go 1.22, izstopata dve spremembi zank »for« . Prej so bile spremenljivke, deklarirane z zanko »for«, ustvarjene enkrat in posodobljene v vsaki iteraciji. V Go 1.22 vsaka iteracija zanke ustvari nove spremenljivke , da se preprečijo nenamerne napake pri deljenju. Poleg tega je bila dodana eksperimentalna podpora (GOEXPERIMENT=rangefunc) za funkcije obsega v zankah »for«, ki omogoča, da se funkcija določi kot iterator. Odpravljena je bila tudi dolgoletna težava z zankami »for«, ki je povzročala, da so klici korutin delili spremenljivke zanke med iteracijami . Poleg tega lahko zanke »for« zdaj iterirajo po celih številih. Na primer:
package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 vzleti!") }
Druga opazna sprememba v tej novi različici je uvedba možnosti uporabe imenika » vendor « , ki vsebuje odvisnosti delovnega prostora. Ukazi lahko zdaj uporabljajo ta imenik, ki je ustvarjen z ukazom ` go work vendor` in se uporablja v ukazih za gradnjo, ko je ` -mod` nastavljen na » vendor «, kar je privzeta vrednost, ko v delovnem prostoru obstaja imenik » vendor «.
Pomembno je omeniti, da funkcionalnost ` go get` ni več podprta zunaj modula v starejšem načinu GOPATH . Vendar pa bodo drugi ukazi za gradnjo, kot sta `go build` in `go test`, še naprej delovali za nedoločen čas za starejše programe GOPATH. Poleg tega ukaz `go mod init` ne bo več poskušal uvoziti zahtev modulov iz konfiguracijskih datotek orodij drugih proizvajalcev (kot je Gopkg.lock).
Go 1.22 uvaja nov paket io/unsafe , ki ponuja funkcionalnost za delo s kazalci in nevarni pomnilnik . Ta paket ponuja metode za pretvorbo kazalcev iz varnih v nevarne tipe, kot tudi za izvajanje operacij kopiranja pomnilnika brez preverjanja meja.
Nadaljevalo se je delo z vključevanjem optimizacij prevajalnika na podlagi rezultatov profiliranja kode PGO. Prevajalnik zdaj uporablja orodja za devirtualizacijo, s katerimi posredne klice različnih metod nadomesti z izvajanjem razširjenih vrstičnih blokov. Ko je bil PGO omogočen, je ta sprememba izboljšala delovanje večine programov za od 2 % do 14 %.
V različici jezika Go za Windows lahko programi, ki se povezujejo s knjižnicami Go, zgrajenimi z -buildmode=c-archive ali -buildmode=c-shared, ali jih nalagajo , zdaj uporabljajo API za beleženje dogodkov sistema Windows (ETW) prek novih paketov runtime/trace in tracehook , ki implementirajo protokol zbiranja sledi dogodkov Go kot ponudnika ETW.
Od ostalih sprememb, ki izstopajo:
- Ukaz pojdi test -pokrov zdaj natisne povzetke pokritosti za pokrite pakete, ki nimajo svojih testnih datotek.
- os/izv, je bila dodana možnost definiranja kontekstnih atributov, kar vam omogoča nastavitev vrednosti, kot so delovni imenik, spremenljivke okolja in deskriptor vhodno/izhodne datoteke za izvedene ukaze.
- Optimizirano upravljanje pomnilnika med izvajanjem, kar ima za posledico 1–3 % povečanje zmogljivosti in 1 % zmanjšanje porabe pomnilnika za večino aplikacij.
- El paquete net/http, funkcija je bila dodana CloseIdleConnections odjemalcu HTTP, ki zapre vse nedejavne povezave, ki jih je odjemalec nedavno uporabil
- V prevajalnik je bila dodana izboljšana eksperimentalna izvedba (GOEXPERIMENT=newinliner) mehanizma za vstavljanje klicev, ki uporablja hevristiko za ločevanje pomembnih operacij od nepomembnih.
- Paket je dodan » matematika/rand/v2 » v standardno knjižnico, ki ponuja bolj dosleden API in uporablja hitrejše algoritme za ustvarjanje psevdonaključnih števil.
- El paquete net/http.ServeMux Dodana možnost določanja metod in mask v predlogah.
Nenazadnje, če vas zanima več informacij, lahko podrobnosti najdete na naslednji povezavi.