Dolna część kobiety trzymającej filiżankę kawy przeciwko tekstowi na łóżku

Pierwszy weekend z Go (Golang) – wrażenia

5 min. czytania

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 pullzero 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; main to 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ędziago fmt formatuje kod automatycznie, a go test upraszcza 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łygo mod init i praca poza GOPATH;
  • testygo test z tabelami testów i t.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.