A Go programozási nyelv sokat fejlődött 2009-es megjelenése óta. A Go 1.18 nagyon várt kiadás volt, mivel támogatja a generikus termékeket és sok más fontos frissítést.
A Go 1.18-as verzióját 2022 márciusában adta ki. Íme a legjelentősebb változtatások rövid ismertetése.
Generics támogatása
Az általános programozás lehetővé teszi olyan függvények írását, amelyek rugalmasabb típusokat fogadnak el és visszaadnak.
Az általánosságok támogatása előtt kifejezetten meg kellett adnia a paramétertípusokat és a visszatérési típusokat. A generikumok legegyszerűbb formája lehetővé teszi, hogy típus nélküli paramétereket adjon meg:
funcNyomtasson bármit[T any](dologT) {
fmt.Println(dolog)
}
A generikus gyógyszerek azonban ennél sokkal több energiát kínálnak. A paraméterekhez szinte bármilyen típusú kombinációt és granularitást deklarálhat. Használhatja például a korlátok csomagot egy olyan függvény írásához, amely bármilyen megrendelhető értékkel működik. Ide tartoznak az int, a floats és a stringek. Íme egy példa, amely bemutatja a szintaxist:
import "golang.org/x/exp/constraints"
funcMax[T megszorítások. Megrendelt](bemenet[]T) (maxT) {
for _, v := tartomány bemenet {
ha v > max {
max = v
}
}
Visszatérés max
}
Vegye figyelembe, hogy ez a függvény az általános típust használja, korlátok. Rendelve, hogy deklarálja a paraméterét és a visszatérési típusát.
Az általánosságok bizonytalanságot és rugalmasságot biztosítanak a kódban. A Generics javaslat és a módosítások visszafelé kompatibilisek.
Fuzz tesztelés
A fuzzing a szoftver tesztelési technika amely hibás, váratlan vagy előre nem látható adatokkal ellenőrzi a programot.
A tesztelés csomag bevezeti a fuzzingot az 1.18-ban, ezért a fuzz meghatározásához importálnia kell a szabványos könyvtárból:
import "tesztelés"
Az importálás után a tesztelés típusú azonosítót adhat át * tesztelés. F a teszt funkcióhoz.
functestFunc(f * tesztelés. F) {
// a kódod
}
A Fuzzing bemeneti paramétereket generál a kód teszteléséhez. A fuzzing kimenetele megjósolhatatlan, mivel a bemeneteket nem a felhasználó határozza meg. A fuzzing segítségével jobb kódteszteket írhat, és elkaphatja azokat a hibákat, amelyekről nem is tudta, hogy léteznek.
Go Workspace támogatás
A munkaterületek hasonló forráskódú könyvtárak, amelyek egy projektet vagy egy nagyobb egységet alkotnak. A munkaterületek megkönnyítik a kód kezelését és hibakeresését a hasonló kódok funkcionalitás alapján történő csoportosításával.
Hagyományosan a Go projekteket forráskódokra osztja (src) és futtatható fájlok (kuka). A Go eszközlánc az előbbiből forráskódot épít az utóbbiban végrehajtható fájlokká. A Go munkaterületek lehetővé teszik a fejlesztők számára, hogy több munkaterülettel dolgozzanak egy adott fő modullal rendelkező Go modulok használatával.
A munkaterületek létrehozásának parancsa a következő:
$ menj dolgozni <parancs>
Használja a munka parancs olyan alparancsokkal, mint:
- benne → létrehoz egy munkaterületet a megadott könyvtárban.
- használat → hozzáad egy új modult a go.work fájlhoz, a go munkaterület fájlhoz.
- szerkeszteni → szerkeszti a go munkaterület fájlt.
- szinkronizál → szinkronizálja a függőségeket a build listáról a munkaterület-modulokkal.
A szabad munkaterületek bevonása növelné a termelékenységet, ahogy azt a nyelv fejlesztése során tervezték.
Teljesítményfejlesztések
Megy Az 1.18-as verzió már támogatja az ARM64 Apple M1-et és a 64 bites PowerPC-t az ABI-hívási konvencióban. Ez több mint 10%-os CPU-teljesítménynövekedést eredményez ezen eszközök felhasználói számára.
A függvényekben deklarált és nem használt változók most hibaként kerülnek naplózásra a programfordítás során.
A menj építeni parancs más kapcsolódó parancsokkal együtt támogatja a -asan flag, amely támogatja a C/C++ interoperabilitást. Ez segít a Go fejlesztőknek abban, hogy a Go programokat a C és C++ programokkal együtt használják.
Egyéb fontos frissítések
A szerezz parancs már nem telepíti a csomagokat modul-tudatos módban, ami nagy változás ahhoz képest, amikor Ön először a Go-val kezdtem. A menj telepíteni parancs helyettesíti kap a munkaterületek modulfüggőségének beállításához.
Mivel a típusellenőrző mostantól általánosakat kezel, a hibaüzenetek naplózása eltérő lehet, mint a korábbi verziókban.
A programok fordítási ideje lassabb lehet 1.18-ban. Ez azonban nem befolyásolja a végrehajtási időt, miután a Go lefordította a programot.
A legújabb változtatások teljes részleteit megtalálja a kiadási megjegyzésekben Irány az 1.18.
A Go 1.18 számos változatos kiegészítést tartalmaz
A Go 1.18 használatával most már írhat általános kódot, hatékonyan tesztelhet fuzzing használatával, és válthat a Go modulok között munkaterületek használatával. Akár olyan kódot is írhat, amely a C és C++ programokkal együtt működik.
Érdemes ma Golangot tanulni?
Olvassa el a következőt
Kapcsolódó témák
- Programozás
- Programozás
- Programozási nyelvek
A szerzőről
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!
Kattintson ide az előfizetéshez