Przesłane przez wydanie języka programowania Idź 1.14, który jest rozwijany przez Google przy udziale społeczności jako rozwiązanie hybrydowe, które łączy w sobie wysoką wydajność języków kompilowanych z zaletami języków skryptowych, takimi jak łatwość pisania kodu, szybkość programowania, i ochrona przed błędami. Kod projektu dystrybuowane przez na licencji BSD.
Składnia Go jest oparta na znanych elementach języka C z pewnymi zapożyczeniami z języka Python. Język jest dość zwięzły, ale kod jest łatwy do odczytania i zrozumienia. Kod Go jest kompilowany do samodzielnych binarnych plików wykonywalnych, które działają natywnie bez użycia maszyny wirtualnej (profilowanie, debugowanie i inne podsystemy wykrywania problemów w czasie wykonywania są zintegrowane jako komponenty wykonawcze), co pozwala osiągnąć wydajność porównywalną z programami w języku C.
Projekt jest początkowo rozwijany z myślą o programowaniu wielowątkowym i wydajnej pracy w systemach wielordzeniowych, w tym o zapewnieniu środków zaimplementowanych na poziomie operatora do organizowania obliczeń równoległych i interakcji między równolegle wykonywanymi metodami. Język zapewnia również wbudowaną ochronę przed przekroczeniem przydzielonych bloków pamięci oraz zapewnia możliwość korzystania z Garbage Collectora.
Nowy system modułów w poleceniu „go” jest deklarowany jako gotowy do ogólnego użytku, domyślnie włączony i zalecany do zarządzania zależnościami zamiast GOPATH. Nowy system modułów oferuje zintegrowaną obsługę wersjonowania, narzędzia do dostarczania pakietów i ulepszone zarządzanie zależnościami. Dzięki modułom programiści nie są już przywiązani do pracy w drzewie GOPATH, mogą jawnie definiować zależności wersjonowane i tworzyć powtarzalne kompilacje.
Dodany obsługa wbudowanych interfejsów z nakładającymi się zestawami metod. Metody z wbudowanego interfejsu mogą teraz mieć takie same nazwy i taką samą sygnaturę jak metody w już istniejących interfejsach. Jawnie zadeklarowane metody pozostają unikalne, jak poprzednio.
Poprawiono wydajność wyrażenia „defer”, którego użycie jest teraz prawie tak szybkie, jak bezpośrednie wywołanie funkcji odroczonej, co pozwala na użycie opóźnionego uruchamiania funkcji w kodzie wrażliwym na wydajność.
Zapewniono asynchroniczne wywłaszczanie współprogramów (goroutine) — pętle, które nie zawierają wywołań funkcji, teraz potencjalnie nie mogą doprowadzić do zakleszczenia harmonogramu ani opóźnić rozpoczęcia wyrzucania elementów bezużytecznych.
Poprawiono wydajność systemu alokacji stron pamięci, przy znacznie mniejszej liczbie konfliktów blokad w konfiguracjach z dużymi wartościami GOMAXPROCS. W rezultacie opóźnienia zmniejszyły się, a przepustowość wzrosła przy równoległym intensywnym rozmieszczeniu dużych bloków pamięci.
Zoptymalizowano blokady i zmniejszono liczbę przełączeń kontekstu podczas uruchamiania wewnętrznych timerów używanych w funkcjach time.After, time.Tick, net.Conn.SetDeadline.
W poleceniu go flaga „-mod=vendor” jest domyślnie włączona, jeśli w katalogu głównym znajduje się katalog dostawcy, który jest przeznaczony do dostarczania zewnętrznych zależności powiązanych z określonym dostawcą. Dodano oddzielną flagę „-mod=mod”, aby ładować moduły z pamięci podręcznej modułów zamiast z katalogu „vendor”. Jeśli plik go.mod jest tylko do odczytu, flaga „-mod=readonly” jest domyślnie udostępniana, jeśli nie ma głównego katalogu „vendor”. Dodano flagę „-modfile=file”, aby określić alternatywny plik go.mod zamiast tego w katalogu głównym modułu.
Dodano zmienną środowiskową GOINSECURE, dzięki czemu po ustawieniu komenda go nie wymaga użycia protokołu HTTPS i pomija weryfikację certyfikatu podczas bezpośredniego ładowania modułów.
Do kompilatora została dodana domyślnie włączona flaga „-d=checkptr”, która sprawdza kod pod kątem zgodności z zasadami bezpiecznego korzystania z unsafe.Pointer.
W zestawie nowy pakiet hash/maphash z niekryptograficznymi funkcjami skrótu do tworzenia tablic skrótów dla dowolnych sekwencji bajtów lub łańcuchów.
Dodano eksperymentalną obsługę 64-bitowego RISC-V w systemie Linux.
Dodano obsługę FreeBSD w 64-bitowych systemach ARM.