Programski jezik Go se dosta razvio otkako je prvi put objavljen 2009. godine. Go 1.18 bio je dugo očekivano izdanje zbog svoje podrške za generičke lijekove i mnogih drugih važnih ažuriranja.

Go je izdao verziju 1.18 u ožujku 2022. Evo ukratko najznačajnijih promjena.

Podrška za generičke lijekove

Generičko programiranje omogućuje pisanje funkcija koje mogu prihvatiti i vratiti fleksibilnije tipove.

Prije podrške za generike, morali ste eksplicitno navesti tipove parametara i tipove povrata. Najjednostavniji oblik generika omogućuje vam određivanje neupisanih parametara:

funcPrintAnything[T bilo koji](stvarT) {
fmt.Println(stvar)
}

Ali generici nude mnogo više snage od samo ove. Možete deklarirati gotovo svaku kombinaciju i granularnost tipa za parametre. Na primjer, možete koristiti ograničenja paket za pisanje funkcije koja radi na bilo kojoj vrijednosti koju možete naručiti. To uključuje int, floats i nizove. Evo primjera koji pokazuje sintaksu:

uvoz "golang.org/x/exp/constraints"

funcMaks[T ograničenja. Naručeno](ulazni[]T) (maksT) {
za _, v := unos raspona {
ako v > max {
max = v
}
}

povratak maks
}

Imajte na umu da ova funkcija koristi generički tip, ograničenja. Naručeno, da deklarirate svoj parametar i njegov tip povrata.

Generici osiguravaju nesigurnost i fleksibilnost koda. Generički prijedlog i promjene su kompatibilni unatrag.

Fuzz testiranje

Fuzzing je a tehnika testiranja softvera koji provjerava valjanost programa s pogrešnim, neočekivanim ili nepredvidivim podacima.

The testiranje paket uvodi fuzz u 1.18, tako da da biste definirali fuzz, morate ga uvesti iz standardne biblioteke:

uvoz "testiranje"

Nakon uvoza testiranje paket, možete proslijediti identifikator tipa *testiranje. F na testnu funkciju.

functestFunc(f *testiranje. F) {
// vaš kod
}

Fuzzing generira ulazne parametre za testiranje koda. Ishod fuzziranja je nepredvidiv budući da ulazi nisu korisnički definirani. Fuzzing bi vam trebao pomoći da napišete bolje testove koda i uhvatite greške za koje niste znali da postoje.

Go Workspace Support

Radni prostori su direktoriji sličnog izvornog koda koji čine projekt ili veću jedinicu. Radni prostori olakšavaju upravljanje kodom i otklanjanje pogrešaka grupiranjem sličnog koda na temelju funkcionalnosti.

Uobičajeno, Go projekte dijelite na izvorni kod (src) i izvršne datoteke (kantu). Go alatni lanac izgrađuje izvorni kod iz prvog u izvršne datoteke u drugom. Go radni prostori omogućuju razvojnim programerima rad s više radnih prostora koristeći Go module s određenim glavnim modulom.

Naredba za kreiranje radnog prostora je:

$ idi raditi <naredba>

Koristiti raditi naredba s podnaredbama poput:

  • u tome → stvara radni prostor u navedenom direktoriju.
  • koristiti → dodaje novi modul u go.work, datoteku radnog prostora go.
  • Uredi → uređuje datoteku radnog prostora go.
  • sinkronizirati → sinkronizira ovisnosti s popisa izgradnje na module radnog prostora.

Uključivanje radnih prostora za rad povećalo bi produktivnost kako je planirano u razvoju jezika.

Poboljšanja performansi

Ići verzija 1.18 sada podržava ARM64 Apple M1 i 64-bitni PowerPC u konvenciji ABI pozivanja. To rezultira povećanjem od 10% u performansama procesora za korisnike ovih uređaja.

Deklarirane i neiskorištene varijable u funkcijama sada se bilježe kao pogreške pri kompilaciji programa.

The idi graditi naredba, zajedno s drugim povezanim naredbama, podržava -asan zastavicu, koja podržava interoperabilnost s C/C++. To će pomoći Go programerima da koriste Go programe s C i C++ programima.

Ostala važna ažuriranja

The idi uzmi naredba više ne instalira pakete u modu svjesnom modula, što je velika promjena u odnosu na to kada ste vi prvi put počeo s Go. The idi instaliraj naredba zamjenjuje dobiti za prilagodbu ovisnosti modula u radnim prostorima.

Budući da provjera tipa sada obrađuje generičke, poruke o pogrešci mogu se zabilježiti drugačije nego u prethodnim verzijama.

Vrijeme potrebno za prevođenje programa može biti sporije u 1.18. Ali to neće utjecati na vrijeme izvršenja nakon što Go kompajlira vaš program.

Sve pojedinosti o svim najnovijim promjenama možete pronaći u bilješkama o izdanju za Idi 1.18.

Go 1.18 ima nekoliko različitih dodataka

Koristeći Go 1.18, sada možete pisati generički kod, učinkovito testirati pomoću fuzziranja i prebacivati ​​se između Go modula pomoću radnih prostora. Možete čak napisati kod koji radi zajedno s C i C++ programima.

Je li Golang danas vrijedan učenja?

Pročitajte dalje

UdioCvrkutUdioE-mail

Povezane teme

  • Programiranje
  • Programiranje
  • Programski jezici

O autoru

Osoblje MUO

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu