Go, znany też jako Golang, to język programowania, który w zaledwie kilka dni może stać się Twoim nowym faworytem – prosty w nauce, wydajny i zaskakująco angażujący. W tym artykule dzielę się osobistymi wrażeniami z pierwszego weekendu spędzonego na eksploracji Go, skierowanymi do początkujących programistów. Omówię instalację, pierwsze kroki, zalety, pułapki oraz praktyczne przykłady, opierając się na doświadczeniach z tutoriali i własnych testach. Dane i cytaty pochodzą z wiarygodnych źródeł polskojęzycznych, by ułatwić start.
Dlaczego Go? Krótki wstęp dla początkujących
Go został publicznie wydany w wersji 1.0 w 2012 roku i szybko zyskał popularność dzięki prostocie składni oraz wysokiej wydajności, idealnej do aplikacji backendowych. Jego wyróżnikami są wbudowane dobre praktyki programistyczne – nazwy publicznych struktur i funkcji zawsze zaczynają się wielką literą, kompilator blokuje import nieużywanych pakietów, a język narzuca jednolity styl formatowania kodu, kończąc niepotrzebne debaty o wcięciach.
W porównaniu do języków jak Python czy Java, Go ma garbage collector (automatyczne zarządzanie pamięcią), ale wyróżnia się statycznym typowaniem i jedyną pętlą for, która zastępuje while i do-while. Wielu autorów tutoriali podkreśla, że Go jest dla osób z minimalnym doświadczeniem w programowaniu i szukających nowego, pragmatycznego języka – niekoniecznie dla absolutnych nowicjuszy.
Instalacja i narzędzia – pierwsze wyzwania weekendu
Pierwszy krok to pobranie kompilatora ze strony golang.org, gdzie znajdziesz instrukcje dla Windows, macOS i Linuksa. Współczesny Go wspiera moduły (go mod), więc klasyczny $GOPATH nie jest już obowiązkowy w większości projektów – to znacząco upraszcza start.
Na Linuksie pomocne mogą być następujące ustawienia powłoki, jeśli chcesz korzystać z $GOPATH równolegle z modułami:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
W VS Code konfiguracja toolingu (autouzupełnianie, dokumentacja) wymaga kilku kroków: instalacji rozszerzenia Go i ewentualnego ustawienia ścieżek. Początkowo to bywa frustrujące – więcej setupu niż w C#, JS czy Elixirze – ale po przejściu daje doskonałe podpowiedzi i dokumentację. Dokumentacja na golang.org jest pomocna, choć nie perfekcyjna. Alternatywy to LiteIDE czy Atom/Sublime z wtyczkami.
Pierwsze wrażenia z instalacji – sobotni poranek spędziłem na walce z konfiguracją, ale było warto. Jak napisał Jakub Gutkowski:
Początki bywają trudne
Po kilku próbach – jak dodaje autor:
miałem gotowe rozwiązanie które śmigało
Na koniec weekendu wdrażałem prostą apkę skryptem go build i git pull – zero dodatkowych instalacji.
Pierwszy program – hello world i podstawy składni
Oto minimalny program w Go:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
Wyjaśnienie krok po kroku:
package main– każdy plik należy do pakietu;mainto punkt wejścia;import "fmt"– pakiet do formatowania wejścia/wyjścia; kompilator zgłosi błąd, jeśli go nie użyjesz;func main()– główna funkcja uruchamia program.
Kompiluj i uruchamiaj najczęściej używanymi poleceniami:
go build– kompilacja do pliku binarnego;go run– szybkie uruchomienie bez tworzenia binarki;go test– uruchomienie testów jednostkowych;go get– pobieranie zależności z modułów.
Składnia jest intuicyjna: typy mogą być wnioskowane (sum := 0), a pętla for i < 1000 { ... } zachowuje się jak klasyczny while. Prostota składni to ogromny plus – nic nie rozprasza od logiki problemu.
Praktyka – rozwiązanie zadania z Project Euler
By sprawdzić Go w boju, wziąłem zadanie 1 z Project Euler – sumę liczb poniżej 1000 podzielnych przez 3 lub 5.
Najprostsze rozwiązanie (czytelne, choć nieoptymalne):
package main
import "fmt"
const MAX = 1000
func main() {
sum := 0
i := 0
for i < MAX {
if i%3 == 0 || i%5 == 0 {
sum += i
}
i += 1
}
fmt.Println(sum) // Wynik: 233168
}
Kluczowe elementy:
const MAX = 1000– definicja stałej sterującej zakresem;- pętla
for– z warunkiem i ręczną inkrementacją; - operator
%– reszta z dzielenia,||– logiczne OR.
Pełny kod działa na Go Playground – idealnym środowisku do testów bez instalacji. Wynik: 233168, co potwierdza poprawność rozwiązania.
Bardziej zaawansowane wariacje – można użyć range dla idiomatycznego stylu albo gorutyn i channels, by zademonstrować współbieżność (mocna strona Go).
Wrażenia z kodowania – godziny minęły na zabawie pętlami i optymalizacją. Go wymusza czysty, czytelny kod i szybko nagradza dobre nawyki.
Zalety i wady po pierwszym weekendzie
Zalety:
- wydajność i prostota – idealne do backendu, szybkie kompilacje;
- wbudowane narzędzia –
go fmtformatuje kod automatycznie, ago testupraszcza testy; - społeczność – dostępne tutoriale po polsku (np. programistkisasuper.pl), kursy NobleProg (28 h dla programistów);
- współbieżność – gorutyny i channels są proste w użyciu i bardzo wydajne.
Wady:
- krzywa uczenia początkowa – konfiguracja toolingu (dawniej
GOPATH) bywa wymagająca; - debugger w VS Code – może wymagać dodatkowych kroków (Delve, konfiguracja);
- jednolita pętla – tylko
for; trzeba się przyzwyczaić.
Porównanie z innymi językami (dla szybkiej orientacji):
| Aspekt | Go | Python/Java |
|---|---|---|
| Składnia | Bardzo prosta | Bardziej rozbudowana |
| Wydajność | Wysoka (kompilowany do kodu maszynowego) | Zmienna (Python: niższa; Java: wysoka dzięki JIT) |
| Początkowa konfiguracja | Uproszczona z modułami (go mod) |
Zazwyczaj łatwa |
| Pętle | Tylko for |
Wiele rodzajów |
| Garbage collector | Tak | Tak |
Zaawansowane kroki i zasoby na dalszy rozwój
Po weekendzie warto eksperymentować z następującymi elementami ekosystemu:
- moduły –
go mod initi praca pozaGOPATH; - testy –
go testz tabelami testów it.Run(); - wydarzenia – spotkania Golang w Polsce (np. Crossweb) dla wymiany doświadczeń.
Polecane zasoby po polsku:
- tutoriale – programistkisasuper.pl, blog.gutek.pl;
- wideo – „[PL] Programowanie w Go – #1” (szybkie wprowadzenie), „Jak nauczyć się programowania”;
- kursy – NobleProg, devopsiarz.pl.






