Korzystanie z Go (Golang)
Przegląd
Go (często nazywany Golang) to statycznie typowana, kompilowana język programowania stworzony przez Google i udostępniony jako open source. Charakteryzuje się prostą składnią, bardzo szybkim kompilowaniem, doskonałą obsługą współbieżności (dzięki lekkim goroutine
i mechanizmowi komunikacji channel
) oraz wydajnym, wbudowanym mechanizmem garbage collection. Go jest ceniony za budowę wydajnych usług sieciowych, systemów rozproszonych, mikroserwisów oraz narzędzi CLI, stając się jednym z głównych wyborów w nowoczesnych aplikacjach chmurowych i backendowych.
Wsparcie Go w ServBay
ServBay to zintegrowane, lokalne środowisko do tworzenia aplikacji webowych dla macOS i Windows, oferujące płynne i potężne wsparcie dla programistów Go. Dzięki ServBay możesz niezwykle łatwo instalować, zarządzać oraz przełączać się pomiędzy różnymi wersjami Go bez żmudnej ręcznej konfiguracji zmiennych środowiskowych (np. GOROOT
, GOPATH
), co bardzo upraszcza proces inicjalizacji i utrzymania środowiska Go.
ServBay zawiera kompletny zestaw narzędzi Go i obsługuje szeroki zakres wersji – od historycznych po najnowsze stabilne, tak aby sprostać wymaganiom Twoich projektów:
- Go 1.11
- Go 1.12
- Go 1.13
- Go 1.14
- Go 1.15
- Go 1.16
- Go 1.17
- Go 1.18
- Go 1.19
- Go 1.20
- Go 1.21
- Go 1.22
- Go 1.23
- Go 1.24 (oraz kolejne wersje wraz z aktualizacjami ServBay)
Wsparcie dla Go Modules
Środowisko ServBay domyślnie włącza oraz rekomenduje zarządzanie zależnościami poprzez Go Modules – oficjalne rozwiązanie zalecane od wersji 1.11. W terminalu ServBay możesz bezpośrednio korzystać z komend typu go mod
(np. go mod init
, go get
, go mod tidy
) do kontrolowania zależności projektu, nie martwiąc się o tradycyjne ustawienia $GOPATH
.
Wymagania wstępne
- ServBay zainstalowany i uruchomiony na macOS.
- Podstawowa znajomość programowania w Go.
- Umiejętność użycia podstawowych poleceń w terminalu.
Instalacja Go
Instalacja środowiska Go poprzez intuicyjny panel GUI ServBay jest bardzo prosta:
- Uruchom aplikację ServBay.
- W lewym pasku nawigacyjnym wybierz opcję
Pakiety
. - Na rozwijanej liście pakietów znajdź kategorię
Go
. - Rozwiń kategorię
Go
, aby zobaczyć dostępne wersje do instalacji. - Wybierz potrzebną wersję Go (zalecane najnowsze stabilne, np. Go 1.24) i kliknij przycisk
Instaluj
obok wybranej wersji. - ServBay automatycznie pobierze i zakończy instalację wybranego Go – czas zależy od prędkości Twojego internetu.
Po zakończeniu instalacji status wersji zmieni się na „zainstalowana”; możesz zainstalować inne wersje lub przełączać się między nimi według potrzeb.
Korzystanie z Go
Po udanej instalacji Go możesz bezpośrednio korzystać z komend go
w systemowym terminalu.
Aby sprawdzić, czy Go jest zainstalowane i która wersja jest aktywna, wpisz:
bash
go version
1
Powinieneś zobaczyć w terminalu coś podobnego, pokazującego aktualnie zarządzaną przez ServBay wersję Go:
go version go1.24.1 darwin/arm64
1
Budowa oraz uruchamianie prostego webowego projektu Go
Wykonajmy przykładowy serwer HTTP w Go i skompilujmy oraz uruchommy go w środowisku ServBay.
Stwórz katalog projektu: Zalecamy utworzenie nowego katalogu w domyślnym katalogu www ServBay
/Applications/ServBay/www
dla swojego projektu Go. W tym przykładzie stworzymy foldergo-servbay-demo
.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Inicjalizuj Go Modules: W katalogu projektu (
go-servbay-demo
) zainicjuj Go Modules poleceniemgo mod init
. Jako identyfikator możesz użyć nazwy folderu.bashgo mod init go-servbay-demo
1Komenda utworzy plik
go.mod
do śledzenia zależności w projekcie.Napisz kod Go: Utwórz plik źródłowy
main.go
i wklej poniższy kod:gopackage main import ( "fmt" "log" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { hostname, _ := os.Hostname() fmt.Fprintf(w, "Hello from Go on ServBay!\nHostname: %s\nPath: %s\n", hostname, r.URL.Path) } func main() { http.HandleFunc("/", handler) port := "8080" // Definicja portu nasłuchiwania dla serwera log.Printf("Go web server starting on port %s...", port) log.Printf("Access it at http://localhost:%s", port) // Uruchom serwer HTTP err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Error starting server: %s\n", err) } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27Ten kod przedstawia prosty serwer HTTP nasłuchujący na porcie 8080. Na każde żądanie zwraca komunikat "Hello from Go on ServBay!" wraz z nazwą hosta i ścieżką żądania.
Uruchom aplikację Go: Upewnij się, że jesteś w katalogu projektu (
/Applications/ServBay/www/go-servbay-demo
) w terminalu ServBay, następnie skompiluj i uruchom aplikację komendą:bashgo run main.go
1Jeśli wszystko przebiegło pomyślnie, zobaczysz w terminalu logi informujące o starcie serwera:
2024/05/20 15:00:00 Go web server starting on port 8080... 2024/05/20 15:00:00 Access it at http://localhost:8080
1
2Odwiedź aplikację: Otwórz przeglądarkę i wpisz
http://localhost:8080
. Powinieneś zobaczyć odpowiedź w stylu "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /".
Konfiguracja reverse proxy w ServBay (zalecane)
Choć można testować aplikację pod localhost:8080
, dla wygodnego rozwoju warto użyć własnej domeny (np. go-app.servbay.demo
) oraz skorzystać z reverse proxy przez serwer WWW ServBay (Caddy, Apache lub Nginx). Pozwala to korzystać ze standardowych portów HTTP/HTTPS, zautomatyzowanego SSL i łatwej integracji z innymi usługami.
- Utwórz stronę w ServBay:
- Otwórz ServBay GUI i przejdź do sekcji
Strony
. - Kliknij przycisk
Dodaj stronę
. - Domena: wpisz np.
go-app.servbay.demo
. - Typ strony: wybierz Reverse Proxy.
- Adres IP: wpisz
127.0.0.1
. - Port: wpisz
8080
.
- Otwórz ServBay GUI i przejdź do sekcji
Zapisz i przeładuj konfigurację: Zatwierdź zmiany w GUI oraz uruchom ponownie (lub przeładuj) webserwer (Caddy/Nginx), aby nowa konfiguracja zaczęła działać.
Odwiedź aplikację przez domenę: Aplikacja Go będzie dostępna pod adresem
https://go-app.servbay.demo
. Serwer WWW ServBay obsłuży żądania i przekaże je do Twojego programu Go.
Zarządzanie wersjami Go
ServBay umożliwia wyjątkowo łatwe zarządzanie oraz przełączanie się między różnymi wersjami Go.
- Przełączanie wersji: W GUI ServBay, sekcja
Pakiety
->Go
, zobaczysz zainstalowane wersje. W menu po lewej otwórzUstawienia
, by wybrać domyślną wersję Go. - Weryfikacja: Po przełączeniu wersji, otwórz ponownie terminal i wpisz
go version
– sprawdź czy wersja odpowiada Twojemu wyborowi.
Plik .servbay.config
: zarządzanie wersją Go w projekcie
Oprócz globalnej zmiany wersji Go, ServBay umożliwia bardziej precyzyjne sterowanie wersją przez prosty plik .servbay.config
w katalogu głównym projektu.
Jak to działa:
Gdy w zintegrowanym terminalu ServBay użyjesz komendy cd
, przechodząc do folderu zawierającego plik .servbay.config
, ServBay automatycznie go wykryje i odczyta. Zgodnie z ustawieniem (np. GO_VERSION
) tymczasowo dostosuje środowisko terminala, aby komendy Go wskazywały wybraną wersję.
Format konfiguracji:
.servbay.config
to prosty plik tekstowy z parą klucz-wartość. By określić wersję Go dla projektu, dodaj np.:
ini
# Przykład pliku .servbay.config
# Określa użycie Go w wersji 1.22 dla bieżącego projektu
GO_VERSION=1.22
# Możliwe równocześnie wskazanie wersji innych narzędzi
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... inne opcje ...
# GOPROXY=https://goproxy.cn,direct
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Zalety:
- Automatyczne przełączanie wersji: Bez ręcznej zmiany wersji globalnie – po wejściu do folderu projektowego automatycznie używana jest właściwa wersja Go.
- Izolacja projektów: Każdy projekt jest budowany i uruchamiany w wybranym przez siebie środowisku Go, więc nie dochodzi do konfliktów wersji.
- Współpraca w zespole: Po wrzuceniu pliku
.servbay.config
do repozytorium (np. Git), każdy członek zespołu ma identyczne środowisko bazowe Go po sklonowaniu projektu.
Przykłady zastosowania:
Załóżmy, że masz dwa projekty:
project-a
wymaga Go 1.12project-b
korzysta z najnowszego Go 1.22
W katalogach głównych obu projektów dodaj pliki .servbay.config
:
/Applications/ServBay/www/project-a/.servbay.config
:iniGO_VERSION=1.12
1/Applications/ServBay/www/project-b/.servbay.config
:iniGO_VERSION=1.22
1
Po przejściu do /Applications/ServBay/www/project-a
i wpisaniu go version
w terminalu zobaczysz Go 1.12.x, a przy przejściu do /Applications/ServBay/www/project-b
– Go 1.22.x.
Uwaga: .servbay.config
wpływa głównie na podstawową wersję Go rozpoznawaną przez ServBay. Zależności projektu zalecamy kontrolować za pomocą Go Modules (go.mod
).
Najczęstsze pytania (FAQ)
Q: Komenda
go
w terminalu ServBay zgłasza „command not found”?A: Upewnij się, że środowisko terminala ma poprawnie ustawione PATH ServBay oraz w GUI ServBay w sekcji Pakiety -> Go jest zainstalowana przynajmniej jedna wersja Go i wybrana jako domyślna.
Q: Jak zaktualizować Go do najnowszej wersji w ServBay?
A: Regularnie sprawdzaj sekcję Pakiety -> Go w GUI ServBay. Jeśli pojawi się nowsza wersja na liście, możesz ją zainstalować jednym kliknięciem. Po instalacji zmień domyślną wersję w GUI.
Q: Problemy z siecią lub wolne pobieranie zależności przy użyciu Go Modules?
A: Domyślnie Go Modules pobiera zależności z
proxy.golang.org
. Jeśli jesteś w Chinach lub masz ograniczony dostęp do sieci, możesz skonfigurować zmienną środowiskowąGOPROXY
na szybki mirror, np.https://goproxy.cn
czyhttps://goproxy.io
. Możesz ustawić to globalnie w ServBay lub w pliku.servbay.config
(np.GOPROXY=https://goproxy.cn,direct
).Q: Serwer Go zgłasza „address already in use” (port zajęty)?
A: Błąd oznacza, że port (np. 8080) jest już używany przez inną aplikację. Możesz zmienić port na niezajęty (np. 8081, 9000) w kodzie Go lub odnaleźć i zatrzymać proces blokujący port. W macOS skorzystaj z
lsof -i :<port_number>
(np.lsof -i :8080
), aby znaleźć PID procesu, a następnie zakończ go poleceniemkill <PID>
.Q: Jaka jest różnica między plikiem
.servbay.config
a globalną zmianą wersji Go? Którego używać?A: Przełączenie globalnej wersji (poprzez GUI ServBay) zmienia domyślne środowisko dla całego systemu. Plik
.servbay.config
pozwala na nadpisanie wersji Go tylko wewnątrz folderu projektu i w aktualnej sesji terminala. Zalecamy użycie.servbay.config
dla zarządzania wersją Go zależnie od projektu – pozwala na niezależność, powtarzalność i brak konfliktów między projektami. Zmiana globalna sprawdza się, gdy chcesz ustawić najczęściej wykorzystywaną wersję Glo.
Podsumowanie
ServBay dostarcza programistom Go na macOS wyjątkowo wydajne i przyjazne lokalne środowisko do pracy. Dzięki przejrzystemu GUI łatwo zainstalujesz i będziesz zarządzać wieloma wersjami Go, a plik .servbay.config
pozwoli na kontrolę wersji na poziomie projektu. Z użyciem Go Modules do obsługi zależności oraz wbudowanych funkcji reverse proxy i hostingu aplikacji webowych, możesz szybko budować, uruchamiać i testować swoje projekty Go. ServBay znacząco redukuje złożoność konfiguracji i pozwala skupić się na samym tworzeniu kodu w Go.