Definicja #
Go (nazywany też Golang od domeny golang.org) to statycznie typowany, kompilowany język programowania opracowany w Google przez Roberta Griesemera, Roba Pike'a i Kena Thompsona. Pierwsza publiczna wersja ukazała się w 2009 roku, a Go 1.0 w 2012 roku. Jest open-source'owy.
Kluczowe cechy języka:
- Prosta składnia — mała liczba słów kluczowych, czytelny kod, brak dziedziczenia klas
- Wbudowana współbieżność — goroutines (lekkie wątki) i kanały (channels) jako pierwsze-klasowe konstrukcje języka
- Szybka kompilacja — kompilator Go jest wyjątkowo szybki, wspiera cross-compilation
- Garbage collector — automatyczne zarządzanie pamięcią z niskim opóźnieniem
- Standardowa biblioteka — bogata biblioteka standardowa, m.in. wbudowany serwer HTTP
- Statyczne binaria — kompilacja do jednego pliku binarnego bez zależności zewnętrznych
Go jest używany przez takie firmy jak Google, Uber, Dropbox, Docker i Kubernetes (oba projekty są napisane w Go). Jest dominującym językiem w ekosystemie cloud-native i DevOps.
Zastosowania #
Go stosuje się do:
- Budowy mikroserwisów i REST API — szybkie, lekkie serwisy z wbudowanym serwerem HTTP
- Narzędzi infrastruktury i DevOps — Docker, Kubernetes, Terraform, Prometheus są napisane w Go
- Systemów rozproszonych wymagających wysokiej współbieżności — goroutines obsługują tysiące jednoczesnych połączeń
- Narzędzi CLI — Go generuje statyczne binaria bez zależności, idealne dla narzędzi deweloperskich
- Serwisów sieciowych i proxy — wysoka wydajność, niskie opóźnienia
Ścieżka nauki #
Go jest stosunkowo łatwy do nauki dzięki prostej składni — warto znać podstawy programowania i rozumieć czym są goroutines.
Zacznij od:
- Podstawy składni — typy, zmienne, funkcje, struktury, interfejsy, obsługa błędów (err != nil)
- Goroutines i kanały — model współbieżności CSP (Communicating Sequential Processes)
- Standardowa biblioteka:
net/http,encoding/json,fmt,os - Zarządzanie modułami — Go Modules (
go.mod)
Następnie poznaj:
- Popularne frameworki: Gin, Echo, Fiber — HTTP routing i middleware
- ORM: GORM lub sqlx do pracy z bazami danych
- Testowanie — wbudowany
testingpackage,go test - Konteneryzacja — Go i Docker są naturalnym połączeniem
FAQ #
- Czym różni się Go od Javy?
- Go kompiluje się do natywnego kodu maszynowego (szybki start, małe zużycie pamięci), ma prostą składnię bez klas i dziedziczenia, wbudowaną współbieżność przez goroutines i statyczne binaria bez JVM. Java ma bogatszy ekosystem, OOP, JVM (portable bytecode) i więcej frameworków enterprise.
- Czy Go ma generyki?
- Tak. Generyki zostały dodane w Go 1.18 (2022) po długich dyskusjach. Przed generyki programiści używali interface{} lub generowania kodu. Generyki Go są prostsze niż w Javie/C#, co celowo ogranicza złożoność.
- Ile zarabia Go Developer w Polsce?
- Go Developer (Golang) zarabia w Polsce od 12 000 do 22 000 zł brutto. Senior z doświadczeniem w mikroserwisach i cloud zarabia 20 000–32 000 zł. Go developers są mniej liczni niż Java/Python, co podnosi stawki.
- Do czego nie nadaje się Go?
- Go nie jest najlepszym wyborem do aplikacji z bogatym GUI (brak natywnego UI framework), obliczeń naukowych (Python/Julia lepiej), systemów embedded z ekstremalnymi ograniczeniami (C/Rust lepiej) i dużych aplikacji enterprise z bardzo złożoną logiką domenową.