Programmeerimiskeel Go on alates selle esmaavaldamisest 2009. aastal palju edasi arenenud. Go 1.18 oli geneeriliste ravimite ja paljude muude oluliste värskenduste toe tõttu väga oodatud väljalase.

Go avaldas 2022. aasta märtsis versiooni 1.18. Siin on kõige olulisemate muudatuste ülevaade.

Genericsi tugi

Üldine programmeerimine võimaldab teil kirjutada funktsioone, mis suudavad aktsepteerida ja tagastada paindlikumaid tüüpe.

Enne üldiste ravimite toetamist tuli teil selgelt välja tuua parameetritüübid ja tagastustüübid. Lihtsaim geneeriliste ravimite vorm võimaldab teil määrata tipimata parameetreid:

funcPrindi midagi[T tahes](asiT) {
fmt.Println(asi)
}

Kuid geneerilised ravimid pakuvad palju rohkem jõudu kui lihtsalt see. Parameetrite jaoks saate deklareerida peaaegu iga kombinatsiooni ja tüübi detailsuse. Näiteks võite kasutada piirangud pakett, et kirjutada funktsioon, mis töötab mis tahes väärtusega, mida saate tellida. See hõlmab int, floats ja strings. Siin on näide, mis demonstreerib süntaksit:

instagram viewer
importida "golang.org/x/exp/constraints"

funcMax[T piirangud. Tellitud](sisend[]T) (maxT) {
jaoks _, v := vahemiku sisend {
kui v > max {
max = v
}
}

tagasi max
}

Pange tähele, et see funktsioon kasutab üldist tüüpi, piirangud. Tellitud, et deklareerida selle parameeter ja tagastustüüp.

Generics pakub koodis ebakindlust ja paindlikkust. Genericsi ettepanek ja muudatused on tagasiühilduvad.

Fuzzi testimine

Fuzzing on a tarkvara testimise tehnika mis kinnitab programmi vigaste, ootamatute või ettearvamatute andmetega.

The testimine pakett tutvustab fuzzi versioonis 1.18, nii et fuzzi määratlemiseks peate selle importima standardsest teegist:

importida "testimine"

Pärast importimist testimine paketti, saate edastada tüübi identifikaatori *testimine. F testimisfunktsioonile.

functestFunc(f * testimine. F) {
// teie kood
}

Fuzzing genereerib koodi testimiseks sisendparameetrid. Hägustamise tulemus on ettearvamatu, kuna sisendid pole kasutaja määratud. Fuzzing peaks aitama teil kirjutada paremaid kooditeste ja tabada vigu, mille olemasolust te ei teadnud.

Avage tööruumi tugi

Tööruumid on sarnase lähtekoodiga kataloogid, mis moodustavad projekti või suurema üksuse. Tööruumid muudavad koodi haldamise ja silumise lihtsamaks, rühmitades sarnase koodi funktsionaalsuse alusel.

Tavaliselt jagate Go projektid lähtekoodideks (src) ja käivitatavad failid (prügikast). Go tööriistaahel ehitab esimesest lähtekoodi teise käivitatavateks failideks. Go tööruumid võimaldavad arendajatel töötada mitme tööruumiga, kasutades konkreetse põhimooduliga Go mooduleid.

Tööruumide loomise käsk on järgmine:

$ mine tööle <käsk>

Kasuta tööd käsk alamkäskudega nagu:

  • selles → loob määratud kataloogis tööruumi.
  • kasutada → lisab tööruumi faili go.work uue mooduli.
  • muuda → redigeerib go tööruumi faili.
  • sünkroonimine → sünkroonib ehitusloendi sõltuvused tööruumi moodulitega.

Tööruumide lisamine suurendaks tootlikkust, nagu keele arendamisel plaaniti.

Toimivuse parandamine

Mine versioon 1.18 toetab nüüd ARM64 Apple M1 ja 64-bitist PowerPC-d ABI helistamiskonventsioonis. Selle tulemuseks on nende seadmete kasutajate protsessori jõudluse suurenemine üle 10%.

Funktsioonides deklareeritud ja kasutamata muutujad logitakse nüüd programmi koostamisel vigadena.

The mine ehitama käsk toetab koos muude seotud käskudega -asan lipp, mis toetab koostalitlusvõimet C/C++-ga. See aitab Go arendajatel kasutada Go programme koos C- ja C++ programmidega.

Muud olulised uuendused

The mine võta käsk ei installi enam pakette mooduliteadlikus režiimis, mis on suur muutus võrreldes sellega, millal te alustasin kõigepealt Go-ga. The mine installima käsk asendab saada mooduli sõltuvuste reguleerimiseks tööruumide vahel.

Kuna tüübikontroll käsitleb nüüd üldisi, võivad veateated logida varasematest versioonidest erinevalt.

Programmide kompileerimiseks kuluv aeg võib versioonis 1.18 olla aeglasem. Kuid see ei mõjuta täitmisaega, kui Go on teie programmi kompileerinud.

Kõikide viimaste muudatuste üksikasjad leiate väljalaskemärkmetest Mine 1.18.

Go 1.18 sisaldab mitmeid erinevaid lisandeid

Kasutades Go 1.18, saate nüüd kirjutada üldist koodi, testida tõhusalt fuzzingi abil ja liikuda Go moodulite vahel, kasutades tööruume. Saate isegi kirjutada koodi, mis töötab koos C ja C++ programmidega.

Kas Golang on täna õppimist väärt?

Loe edasi

JagaSäutsJagaMeil

Seotud teemad

  • Programmeerimine
  • Programmeerimine
  • Programmeerimiskeeled

Autori kohta

MUO töötajad

Liituge meie uudiskirjaga

Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!

Tellimiseks klõpsake siin