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:

instagram viewer
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

Ossza megCsipogOssza megEmail

Kapcsolódó témák

  • Programozás
  • Programozás
  • Programozási nyelvek

A szerzőről

MUO személyzet

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