Go on samanaikainen, käännetty ohjelmointikieli, jossa on C-syntaksin inspiroima staattinen kirjoitus.
Go 1.22 :n uusi versio saapuu kuusi kuukautta version 1.21 jälkeen, ja se sisältää useita merkittäviä muutoksia työkaluihin, suorituksenaikaiseen ympäristöön, optimointiin, kääntäjän parannuksiin ja kirjastoihin.
Niille, jotka eivät tunne Go:ta, minun on mainittava, että se on Googlen kehittämä ohjelmointikieli yhteisön osallistumisella hybridiratkaisuna, joka yhdistää käännettyjen kielten korkean suorituskyvyn etuihin, kuten skriptikielten helppoon koodinkirjoitukseen, kehitysnopeuteen ja virheiden suojaukseen.
Go 1.22: n tärkeimmät uudet ominaisuudet
Tässä uudessa versiossa, joka esiteltiin Go 1.22:sta lähtien, "for"-silmukoihin on tehty kaksi merkittävää muutosta . Aiemmin "for"-silmukan määrittämät muuttujat luotiin kerran ja päivitettiin jokaisella iteraatiokerralla. Go 1.22:ssa jokainen silmukan iteraatio luo uusia muuttujia tahattomien jakamisvirheiden estämiseksi. Lisäksi lisättiin kokeellinen tuki (GOEXPERIMENT=rangefunc) "for"-silmukoiden aluefunktioille, minkä ansiosta funktio voitiin määrittää iteraattoriksi. Pitkäaikainen "for"-silmukoiden ongelma, joka aiheutti korutiinikutsujen jakavan silmukkamuuttujia iteraatioiden välillä, on myös ratkaistu . Lisäksi "for"-silmukat voivat nyt iteroida kokonaislukujen yli. Esimerkiksi:
paketin pää tuonti "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 starttaa!") }
Toinen merkittävä muutos tässä uudessa versiossa on mahdollisuus käyttää " vendor " -hakemistoa , joka sisältää työtilan riippuvuudet. Komennot voivat nyt käyttää tätä hakemistoa, joka luodaan komennolla ` go work vendor` ja jota käytetään rakennuskomennoissa, kun ` -mod` on asetettu arvoon " vendor ", joka on oletusarvo, kun työtilassa on " vendor "-hakemisto.
On tärkeää huomata, että ` go get` -toimintoa ei enää tueta moduulin ulkopuolella vanhassa GOPATH -tilassa. Muut rakennuskomennot, kuten `go build` ja `go test`, toimivat kuitenkin edelleen loputtomiin vanhoissa GOPATH-ohjelmissa. Lisäksi `go mod init` -komento ei enää yritä tuoda moduulivaatimuksia muiden valmistajien työkalujen määritystiedostoista (kuten Gopkg.lock).
Go 1.22 esittelee uuden io/unsafe -paketin , joka tarjoaa toimintoja osoittimien ja epäluotettavan muistin käsittelyyn . Tämä paketti tarjoaa menetelmiä osoittimien muuntamiseen turvallisista tyypeistä epäluotettavaksi sekä muistin kopiointitoimintojen suorittamiseen ilman rajojen tarkistamista.
Työtä jatkettiin kääntäjän optimointien sisällyttämiseksi PGO-koodiprofiloinnin tulosten perusteella . Kääntäjä käyttää nyt devirtualisointityökaluja korvatakseen eri metodeista tulevat epäsuorat kutsut laajennettujen inline-lohkojen suorituksella. Kun PGO otettiin käyttöön, tämä muutos paransi useimpien ohjelmien suorituskykyä 2–14 %.
Go-ohjelman Windows- versiossa ohjelmat, jotka linkittävät tai lataavat -buildmode=c-archive- tai -buildmode=c-shared-valitsimella rakennettuja Go-kirjastoja , voivat nyt käyttää Windowsin tapahtumien lokikirjausrajapintaa (ETW) uusien runtime/trace- ja tracehook -pakettien kautta , jotka toteuttavat Go-tapahtumien jäljityksen keräysprotokollan ETW-palveluntarjoajana.
Muista erottuvista muutoksista:
- Komento mene testaamaan - kansi tulostaa nyt kattavuusyhteenvedot katetuille paketeille, joilla ei ole omia testitiedostoja.
- os/exec, kyky määritellä kontekstiattribuutteja on lisätty, jolloin voit asettaa arvoja, kuten työhakemiston, ympäristömuuttujat ja syöttö-/tulostustiedoston kuvaajan suoritetuille komennoille.
- Optimoitu muistinhallinta ajon aikana, mikä johtaa 1–3 %:n suorituskyvyn kasvuun ja 1 %:n muistin kulutuksen laskuun useimmissa sovelluksissa.
- El paquete net/http, toiminto on lisätty CloseIdleConnections HTTP-asiakkaalle, joka sulkee kaikki asiakkaan äskettäin käyttämät käyttämättömät yhteydet
- Kääntäjään on lisätty puhelun lisäysmekanismin parannettu kokeellinen toteutus (GOEXPERIMENT=newliner), joka erottaa tärkeät toiminnot ei-tärkeistä heuristiikkaa käyttäen.
- Paketti lisätty » matematiikka/rand/v2 » vakiokirjastoon, joka tarjoaa johdonmukaisemman API:n ja käyttää nopeampia algoritmeja näennäissatunnaisten lukujen luomiseen.
- El paquete net/http.ServeMux Lisätty mahdollisuus määrittää menetelmiä ja maskeja malleihin.
Lopuksi, jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.