Go 1.22 on jo julkaistu, tutustu sen uusiin ominaisuuksiin ja parannuksiin

goland

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ä.


Lisää ensisijaiseksi lähteeksi Googlessa