Programovací jazyk Go se od svého prvního vydání v roce 2009 hodně vyvinul. Go 1.18 bylo velmi očekávaným vydáním kvůli jeho podpoře generik a mnoha dalším důležitým aktualizacím.
Go vydala verzi 1.18 v březnu 2022. Zde je přehled nejvýznamnějších změn.
Podpora pro generika
Obecné programování vám umožňuje psát funkce, které mohou přijímat a vracet flexibilnější typy.
Před podporou pro generika jste museli explicitně uvést typy parametrů a návratové typy. Nejjednodušší forma generik vám umožňuje zadat parametry bez typu:
funcTisknout cokoliv[T any](věcT) {
fmt.Println(věc)
}
Ale generika nabízejí mnohem více výkonu než jen toto. Pro parametry můžete deklarovat téměř jakoukoli kombinaci a granularitu typu. Můžete například použít omezení balíček k napsání funkce, která pracuje s libovolnou hodnotou, kterou si můžete objednat. To zahrnuje int, floats a stringy. Zde je příklad, který demonstruje syntaxi:
import "golang.org/x/exp/constraints"
funcMax[T omezení. objednáno](vstup[]T) (maxT) {
for _, v := vstup rozsahu {
pokud v > max {
max = v
}
}
vrátit se max
}
Všimněte si, že tato funkce používá obecný typ, omezení. Objednáno, deklarovat jeho parametr a jeho návratový typ.
Generika poskytují nejistotu a flexibilitu v kódu. Návrh a změny Generics jsou zpětně kompatibilní.
Fuzz testování
Fuzzing je a technika testování softwaru která ověřuje program s chybnými, neočekávanými nebo nepředvídatelnými daty.
The testování balíček zavádí fuzzing v 1.18, takže k definování fuzz jej musíte importovat ze standardní knihovny:
import "testování"
Po importu testování balíčku, můžete předat identifikátor typu *testování. F na testovací funkci.
functestFunc(f *testování. F) {
// váš kód
}
Fuzzing generuje vstupní parametry pro testování kódu. Výsledek fuzzingu je nepředvídatelný, protože vstupy nejsou uživatelem definované. Fuzzing by vám měl pomoci napsat lepší testy kódu a zachytit chyby, o kterých jste nevěděli.
Přejít na podporu pracovního prostoru
Pracovní prostory jsou adresáře podobného zdrojového kódu, které tvoří projekt nebo větší jednotku. Pracovní prostory usnadňují správu a ladění kódu seskupováním podobného kódu na základě funkčnosti.
Obvykle rozdělujete projekty Go do zdrojového kódu (src) a spustitelné soubory (zásobník). Nástroj Go vytváří zdrojový kód z prvního do spustitelných souborů v druhém. Pracovní prostory Go umožňují vývojářům pracovat s více pracovními prostory pomocí modulů Go s konkrétním hlavním modulem.
Příkaz pro vytváření pracovních prostorů je:
$ do práce <příkaz>
Použijte práce příkaz s dílčími příkazy jako:
- init → vytvoří pracovní prostor v zadaném adresáři.
- použití → přidá nový modul do go.work, soubor pracovního prostoru go.
- Upravit → upraví soubor pracovního prostoru go.
- synchronizace → synchronizuje závislosti ze seznamu sestavení do modulů pracovního prostoru.
Zahrnutí pracovních prostorů by zvýšilo produktivitu, jak bylo plánováno při vývoji jazyka.
Zlepšení výkonu
Jít verze 1.18 nyní podporuje ARM64 Apple M1 a 64bitové PowerPC v konvenci volání ABI. To má za následek více než 10% nárůst výkonu CPU pro uživatele těchto zařízení.
Deklarované a nepoužité proměnné ve funkcích jsou nyní protokolovány jako chyby při kompilaci programu.
The jít stavět příkaz spolu s dalšími souvisejícími příkazy podporuje -asan příznak, který podporuje interoperabilitu s C/C++. To pomůže vývojářům Go používat programy Go s programy C a C++.
Další důležité aktualizace
The jít dostat příkaz již neinstaluje balíčky v režimu s ohledem na modul, což je velká změna oproti stavu, kdy jste nejprve jsem začal s Go. The běž nainstalovat příkaz nahrazuje dostat upravit závislosti modulů napříč pracovními prostory.
Protože kontrola typu nyní zpracovává generika, chybové zprávy se mohou protokolovat jinak než v předchozích verzích.
Čas potřebný ke kompilaci programů může být ve verzi 1.18 pomalejší. To však neovlivní dobu provádění, jakmile Go zkompiluje váš program.
Úplné podrobnosti o všech nejnovějších změnách najdete v poznámkách k vydání pro Jděte 1.18.
Go 1.18 má několik různých doplňků
Pomocí Go 1.18 můžete nyní psát generický kód, efektivně testovat pomocí fuzzingu a přepínat mezi moduly Go pomocí pracovních prostorů. Můžete dokonce napsat kód, který funguje ve spojení s programy C a C++.
Vyplatí se dnes golang učit?
Přečtěte si další
Související témata
- Programování
- Programování
- Programovací jazyky
O autorovi
Přihlaste se k odběru našeho newsletteru
Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!
Chcete-li se přihlásit k odběru, klikněte sem