Předložené vydání programovacího jazyka Přejděte na 1.14, který je vyvíjen společností Google za účasti komunity jako hybridní řešení, které kombinuje vysoký výkon kompilovaných jazyků s výhodami skriptovacích jazyků, jako je snadné psaní kódu, rychlost vývoje a ochrana proti chybám. Kód projektu distribuovány pod licencí BSD.
Syntaxe Go je založena na známých prvcích jazyka C s některými výpůjčkami z jazyka Python. Jazyk je poměrně stručný, ale kód je snadno čitelný a srozumitelný. Go kód je zkompilován do samostatných binárních spustitelných souborů, které běží nativně bez použití virtuálního stroje (profilování, ladění a další subsystémy pro detekci problémů za běhu jsou integrovány jako runtime komponenty), což umožňuje dosáhnout výkonu srovnatelného s programy C.
Projekt je zpočátku vyvíjen s ohledem na vícevláknové programování a efektivní provoz na vícejádrových systémech, včetně poskytování prostředků implementovaných na úrovni operátora pro organizaci paralelních výpočtů a interakci mezi paralelně prováděnými metodami. Jazyk také poskytuje vestavěnou ochranu proti přetečení alokovaných paměťových bloků a poskytuje možnost používat garbage collector.
Nový modulový systém v příkazu "go" je deklarován jako připravený k obecnému použití, ve výchozím nastavení povolen a doporučen pro správu závislostí místo GOPATH. Nový modulový systém obsahuje integrovanou podporu verzování, možnosti doručování balíčků a vylepšenou správu závislostí. S moduly již vývojáři nejsou vázáni na práci v rámci stromu GOPATH, mohou explicitně definovat verzované závislosti a vytvářet opakovatelné sestavení.
Přidal podpora pro vkládání rozhraní s překrývající se sadou metod. Metody z vestavěného rozhraní nyní mohou mít stejná jména a signatury jako metody ve stávajících rozhraních. Explicitně deklarované metody zůstávají jedinečné jako dříve.
Výkon výrazu "odložit" byl vylepšen, takže je téměř stejně rychlý jako přímé volání odložené funkce, což umožňuje provedení odložené funkce v kódu citlivém na výkon.
Je poskytována asynchronní preempce coroutines (goroutines) – smyčky, které neobsahují volání funkcí, mohou nyní potenciálně vést k uváznutí plánovače nebo zpozdit začátek shromažďování odpadků.
Účinnost systému přidělování stránek paměti byla vylepšena a v konfiguracích s velkými hodnotami GOMAXPROCS je nyní podstatně méně sporů o zámek. Výsledkem je snížená latence a zvýšená propustnost při současné intenzivní distribuci velkých bloků paměti.
Zamykání bylo optimalizováno a počet kontextových přepínačů byl snížen při spouštění interních časovačů používaných ve funkcích time.After, time.Tick, net.Conn.SetDeadline.
V příkazu go je příznak „-mod=vendor“ standardně povolen, pokud je v kořenovém adresáři adresář dodavatele určený pro doručování externích závislostí vázaných na konkrétního dodavatele. Přidán samostatný příznak "-mod=mod" pro načítání modulů z mezipaměti modulů, nikoli z adresáře "vendor". Pokud je soubor go.mod pouze pro čtení, je standardně nastaven příznak „-mod=readonly“, pokud neexistuje žádný hlavní adresář „vendor“. Přidán příznak "-modfile=soubor" pro určení alternativního souboru go.mod namísto souboru v kořenovém adresáři modulu.
Přidána proměnná prostředí GOINSECURE, když je nastavena, příkaz go nevyžaduje použití HTTPS a při přímém načítání modulů přeskočí kontrolu certifikátu.
Kompilátor přidal ve výchozím nastavení povolený příznak „-d=checkptr“ pro kontrolu souladu kódu s pravidly pro bezpečné použití unsafe.Pointer.
Součástí dodávky je nové balení hash/maphash s nekryptografickými hašovacími funkcemi k vytvoření hašovacích tabulek pro libovolné bajtové sekvence nebo řetězce.
Přidána experimentální podpora pro 64bitovou platformu RISC-V na Linuxu.
Přidána podpora pro FreeBSD na 64bitových systémech ARM.