Używanie Go (Golang)
Przegląd
Go, często nazywany Golang, to statycznie typowany, kompilowany język programowania zaprojektowany i rozwijany przez Google jako projekt open source. Popularność zdobył dzięki przejrzystej składni, bardzo szybkiemu kompilowaniu, znakomitym możliwościom pracy współbieżnej (poprzez lekkie goroutines
i mechanizmy komunikacyjne channel
) oraz wydajnemu, wbudowanemu garbage collectowi. Go jest szczególnie polecany do budowania wysoko wydajnych usług sieciowych, systemów rozproszonych, mikroserwisów i narzędzi wiersza poleceń. Stał się jednym z głównych wyborów dla współczesnych aplikacji natywnych dla chmury oraz backendu.
Wsparcie Go w ServBay
ServBay, zintegrowane lokalne środowisko web developerskie dla macOS, oferuje deweloperom Go płynne i potężne wsparcie. Dzięki ServBay możesz łatwo instalować, zarządzać oraz przełączać się pomiędzy różnymi wersjami Go bez ręcznego konfigurowania skomplikowanych zmiennych środowiskowych (np. GOROOT
, GOPATH
). To znacznie upraszcza inicjalizację i utrzymanie środowiska programistycznego Go.
ServBay posiada kompletny zestaw narzędzi Go i obsługuje szeroki zakres wersji — od starszych po najnowsze stabilne wydania, by sprostać wymaganiom różnych 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 przyszłe wersje wspierane w aktualizacjach ServBay)
Go Modules - wsparcie
Środowisko ServBay domyślnie włącza i rekomenduje korzystanie z Go Modules do zarządzania zależnościami. Jest to oficjalnie zalecany mechanizm, wprowadzony przez twórców Go od wersji 1.11. Korzystając z terminala ServBay możesz używać komend związanych z go mod
(np. go mod init
, go get
, go mod tidy
) do zarządzania zależnościami projektu — bez konieczności martwienia się starymi ustawieniami $GOPATH
.
Wymagania wstępne
- ServBay został pomyślnie zainstalowany i uruchomiony na komputerze z macOS.
- Podstawowa znajomość programowania w Go.
- Umiejętność korzystania z podstawowych komend terminala.
Instalacja Go
Zainstalowanie środowiska Go za pomocą wygodnego panelu graficznego (GUI) w ServBay jest wyjątkowo proste:
- Uruchom aplikację ServBay.
- W lewym pasku nawigacyjnym kliknij
Pakiety
. - W rozwiniętej liście znajdź kategorię
Go
. - Kliknij na
Go
, aby ją rozwinąć. Zobaczysz dostępne wersje Go, które można zainstalować w ServBay. - Wybierz preferowaną wersję Go (najczęściej polecana jest najnowsza stabilna, np. Go 1.24). Kliknij przycisk
Instaluj
przy wybranej wersji. - ServBay automatycznie pobierze i zainstaluje wskazaną wersję Go. Czas instalacji zależy od szybkości Twojego połączenia internetowego.
Po zakończonej instalacji wybrana wersja zostanie oznaczona jako zainstalowana. Możesz również zainstalować inne wersje lub łatwo się między nimi przełączać.
Używanie Go
Po pomyślnym zainstalowaniu Go możesz korzystać z polecenia go
bezpośrednio w systemowym terminalu.
Aby sprawdzić, czy Go działa oraz która wersja jest aktywna, wpisz:
bash
go version
1
Terminal powinien wypisać podobny wynik, wskazując zarządzaną przez ServBay wersję Go:
go version go1.24.1 darwin/arm64
1
Budowanie i uruchamianie prostej aplikacji webowej w Go
Stwórzmy przykładowy, podstawowy serwer HTTP w Go, który skompilujemy i uruchomimy w środowisku ServBay.
Utwórz katalog projektu: Zaleca się utworzenie nowego katalogu projektu Go w domyślnym katalogu stron www ServBay (
/Applications/ServBay/www
). Np. utwórz kataloggo-servbay-demo
.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Inicjalizacja Go Modules: W głównym folderze projektu (
go-servbay-demo
) zainicjuj Go Modules komendągo mod init
. Jako identyfikator modułu można użyć np. nazwy katalogu.bashgo mod init go-servbay-demo
1Ta komenda utworzy plik
go.mod
śledzący zależności projektu.Napisz kod w Go: Stwórz plik źródłowy o nazwie
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" // Określa port, na którym nasłuchuje serwer log.Printf("Go web server starting on port %s...", port) log.Printf("Access it at http://localhost:%s", port) // Uruchomienie serwera 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
27Kod tworzy prosty serwer HTTP, nasłuchujący na lokalnym porcie 8080. Każdy żądany adres zwraca tekst "Hello from Go on ServBay!", nazwę hosta i ścieżkę żądania.
Uruchom aplikację Go: Upewnij się, że znajdujesz się nadal w katalogu projektu (
/Applications/ServBay/www/go-servbay-demo
), a następnie uruchom swoją aplikację komendą:bashgo run main.go
1Jeśli wszystko działa poprawnie, w terminalu zobaczysz log z uruchomionym serwerem:
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
2Uzyskaj dostęp do aplikacji: Otwórz przeglądarkę i przejdź do
http://localhost:8080
. Powinieneś zobaczyć komunikat: "Hello from Go on ServBay! Hostname: twoja-nazwa-hostname Path: /".
Konfiguracja reverse proxy w ServBay (zalecane)
Chociaż aplikację można uruchomić bezpośrednio na porcie localhost:8080
, w lokalnym środowisku znacznie wygodniej mieć ją dostępną pod przyjazną nazwą domenową (np. go-app.servbay.demo
) i korzystać z reverse proxy przez serwer webowy ServBay (Caddy, Apache lub Nginx). Dzięki temu Twoja aplikacja zachowuje się jak w środowisku produkcyjnym, nasłuchuje na portach HTTP/HTTPS i możesz korzystać z dodatkowych funkcjonalności ServBay (np. automatyczne HTTPS, integracja z innymi usługami).
- Utworzenie strony w ServBay:
- Otwórz ServBay GUI i przejdź do sekcji
Strony
. - Kliknij przycisk
Dodaj stronę
. - Domena: Podaj nazwę domeny do użytku lokalnego, 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ę: Zapisz zmiany w konfiguracji strony przez GUI ServBay i upewnij się, że odpowiedni serwer webowy (Caddy lub Nginx) został przeładowany bądź zrestartowany, by wprowadzić nowe ustawienia.
Wejdź przez domenę na aplikację: Teraz możesz przejść do swojej aplikacji Go Web przez przeglądarkę, wpisując
https://go-app.servbay.demo
. Serwer webowy ServBay zajmie się przekierowaniem ruchu do Twojego programu Go.
Zarządzanie wersjami Go
ServBay sprawia, że przełączanie się między różnymi wersjami Go jest wyjątkowo łatwe.
- Przełączanie wersji: W sekcji
Pakiety
->Go
w GUI ServBay zobaczysz wszystkie zainstalowane wersje. W menu po lewej wybierzUstawienia
, a następnie wskaż, która wersja Go ma być domyślną. - Weryfikacja przełączenia: Po zmianie wersji, otwórz ponownie terminal i wpisz
go version
, by upewnić się, że pokazuje się oczekiwana wersja.
Zarządzanie wersją Go na poziomie projektu przez .servbay.config
Oprócz globalnego przełączania wersji Go, ServBay oferuje także zarządzanie wersją na poziomie projektu przy pomocy pliku .servbay.config
umieszczonego w głównym katalogu projektu.
Jak to działa:
Gdy przechodzisz do katalogu z plikiem .servbay.config
używając zintegrowanego terminala ServBay (cd
), środowisko automatycznie wykrywa i odczytuje ten plik. Na podstawie ustawienia (np. GO_VERSION
) tymczasowo zmienia się wersja Go tylko dla bieżącej sesji terminala.
Format pliku konfiguracyjnego:
.servbay.config
to zwykły plik tekstowy w formacie klucz=wartość. Aby wskazać wersję Go, dodaj linię z GO_VERSION
:
ini
# Przykładowy plik .servbay.config
# Używaj Go w wersji 1.22 dla tego projektu
GO_VERSION=1.22
# Możesz także określić wersje innych narzędzi developerskich
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... inne możliwe ustawienia ...
# 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: Brak potrzeby ręcznego ustawiania wersji globalnie — po wejściu do katalogu projektu automatycznie korzystasz ze wskazanej wersji Go.
- Izolacja projektów: Każdy projekt jest kompilowany i uruchamiany z przewidywaną wersją Go, co eliminuje potencjalne konflikty wersji.
- Współpraca w zespole: Plik
.servbay.config
możesz dodać do kontroli wersji (np. Git), dzięki czemu wszyscy członkowie zespołu po klonowaniu repozytorium będą pracować na tej samej wersji Go.
Przykład użycia:
Załóżmy, że masz dwa projekty:
project-a
wymaga Go 1.12project-b
używa najnowszego Go 1.22
W każdym katalogu głównym projektu dodaj plik .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 w terminalu ServBay do /Applications/ServBay/www/project-a
i wpisaniu go version
, powinieneś zobaczyć Go 1.12.x, a dla /Applications/ServBay/www/project-b
— Go 1.22.x.
Uwaga: .servbay.config
dotyczy bazowej wersji Go widocznej w środowisku ServBay. Zarządzanie zależnościami polecamy nadal realizować przez Go Modules (plik go.mod
).
Najczęściej zadawane pytania (FAQ)
Q: Dostaję błąd "command not found" dla komendy
go
w terminalu ServBay?A: Upewnij się, że środowisko terminala zostało poprawnie skonfigurowane przez ServBay i zawiera odpowiedną ścieżkę (
PATH
). Sprawdź też, czy w sekcjiPakiety
->Go
masz zainstalowaną przynajmniej jedną wersję Go i została ona aktywowana jako domyślna.Q: Jak zaktualizować Go w ServBay do najnowszej wersji?
A: Regularnie sprawdzaj sekcję
Pakiety
->Go
w ServBay. Gdy pojawi się nowa wersja Go obsługiwana przez ServBay, możesz ją po prostu zainstalować klikając odpowiedni przycisk. Po instalacji ustaw wersję jako domyślną przez GUI, by zacząć z niej korzystać.Q: Wolne pobieranie zależności przy użyciu Go Modules lub problemy z dostępem do sieci?
A: Go Modules domyślnie pobierają zależności z
proxy.golang.org
. W Chinach kontynentalnych lub innych rejonach o ograniczonym dostępie do internetu mogą wystąpić trudności z połączeniem. Możesz skonfigurować zmienną środowiskowąGOPROXY
, wskazując szybkie proxy, np.https://goproxy.cn
lubhttps://goproxy.io
. Zrobisz to globalnie w ustawieniach ServBay lub zapisując w pliku.servbay.config
(np.GOPROXY=https://goproxy.cn,direct
).Q: Mój serwer Go Web zgłasza błąd "address already in use" podczas uruchamiania?
A: To oznacza, że wybrany port (np. 8080) jest już zajęty przez inny proces w systemie. Możesz: 1) zmienić port w kodzie Go na inny wolny (np. 8081, 9000 itp.); 2) zidentyfikować proces, który blokuje port i go zakończyć. Na macOS użyj polecenia
lsof -i :<numer_portu>
(np.lsof -i :8080
), by zobaczyć PID procesu, a potemkill <PID>
by go zatrzymać.Q: Jaka jest różnica między plikiem
.servbay.config
a globalną zmianą wersji Go? Kiedy który mechanizm wykorzystywać?A: Globalne przełączenie (przez GUI ServBay) zmienia domyślną wersję Go dla całego systemu. Natomiast
.servbay.config
umożliwia nadpisywanie wersji tylko w obrębie danego projektu — zmiana aktywna jest tak długo, jak przebywasz w katalogu projektu, który taki plik posiada. Zalecamy korzystać z.servbay.config
do zarządzania specyficznymi wymaganiami projektów — zapewnia to izolację i powtarzalność środowiska, co jest kluczowe przy pracy nad wieloma projektami wymagającymi różnych wersji Go. Przełączanie globalne przydaje się do ustawienia najczęściej używanej wersji domyślnie.
Podsumowanie
ServBay zapewnia inżynierom Go (Golang) niezwykle wydajne i przyjazne środowisko lokalne pod macOS. Intuicyjny interfejs graficzny pozwala łatwo instalować i zarządzać wieloma wersjami Go, a plik .servbay.config
umożliwia kontrolę wersji na poziomie projektu. Połącz to z zarządzaniem zależnościami przez Go Modules oraz wsparciem dla reverse proxy i hostowania aplikacji na wbudowanym serwerze webowym ServBay, a błyskawicznie skonfigurujesz, uruchomisz i przetestujesz swoje projekty Go. ServBay radykalnie upraszcza zarządzanie środowiskiem deweloperskim, pozwalając Ci skupić się na pisaniu kreatywnego kodu w Go.