Go (Golang) gebruiken
Overzicht
Go, vaak aangeduid als Golang, is een statisch getypeerde, gecompileerde programmeertaal ontwikkeld en open-sourced door Google. De taal wordt gewaardeerd om haar eenvoudige syntaxis, razendsnelle compilatie, uitstekende ondersteuning voor concurrentie (middels lichte goroutines
en channels
voor communicatie), en efficiënte ingebouwde garbage collection. Go is uitermate geschikt voor het bouwen van high-performance netwerkdiensten, distributed systems, microservices en command-line hulpmiddelen, en is daardoor uitgegroeid tot een populaire keuze voor moderne cloud-native applicaties en back-end ontwikkeling.
ServBay’s ondersteuning voor Go
ServBay is een geïntegreerde lokale webontwikkelomgeving voor macOS en Windows, en biedt naadloze en krachtige ondersteuning voor Go developers. Met ServBay kun je eenvoudig meerdere Go-versies installeren en beheren, zonder complexe handmatige configuraties van omgevingsvariabelen (zoals GOROOT
, GOPATH
). Zo wordt het opzetten en onderhouden van je Go development environment sterk vereenvoudigd.
ServBay bevat een complete Go-toolchain en ondersteunt een breed scala aan Go-versies, van oudere tot de nieuwste stabiele releases, zodat je altijd aan de eisen van jouw specifieke project voldoet:
- 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 (plus nieuwere versies die door ServBay ondersteund worden bij updates)
Ondersteuning voor Go Modules
Binnen ServBay is Go Modules standaard ingeschakeld en aanbevolen voor dependency management. Go Modules is sinds versie 1.11 door het Go-team als standaard geïntroduceerd. In de ServBay-terminal kun je direct werken met commands als go mod init
, go get
, en go mod tidy
, zonder je druk te maken over de traditionele $GOPATH
omgeving.
Vereisten
- ServBay is succesvol geïnstalleerd en draait op macOS.
- Je hebt basiskennis van programmeren in Go.
- Je bent vertrouwd met eenvoudige terminal-commando’s.
Go installeren
Het installeren van Go via ServBay’s intuïtieve grafische interface is heel eenvoudig:
- Start de ServBay-app.
- Klik in de linker navigatiebalk op
Packages
. - Zoek in de lijst naar de categorie
Go
. - Klik op
Go
om deze uit te klappen; je ziet een overzicht van alle beschikbare Go-versies. - Selecteer de gewenste Go-versie (meestal de nieuwste stabiele, bijvoorbeeld Go 1.24). Klik op de
Installeren
knop naast die versie. - ServBay downloadt en installeert automatisch de gekozen Go-versie. De duur van dit proces is afhankelijk van je internetverbinding.
Wanneer de installatie voltooid is, zie je dat de status op ‘Geïnstalleerd’ staat; je kunt nu meer versies installeren of tussen reeds geïnstalleerde versies wisselen.
Go gebruiken
Na succesvolle installatie kun je direct de go
tools gebruiken in je terminal.
Om te controleren of Go goed geïnstalleerd is en welke versie actief is, voer je uit:
bash
go version
1
In de terminal krijg je een vergelijkbare output te zien, waarin de door ServBay beheerde Go-versie getoond wordt:
go version go1.24.1 darwin/arm64
1
Een eenvoudige Go webapplicatie bouwen en runnen
Hieronder volgt een basisvoorbeeld van een Go HTTP-server die je kunt compileren en draaien in de ServBay omgeving.
Maak een projectmap aan:
Het is aan te raden een nieuwe map te maken voor je Go-project in ServBay’s standaard webroot/Applications/ServBay/www
, bijvoorbeeldgo-servbay-demo
.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Initialiseer Go Modules:
In de hoofddirectory van het project (go-servbay-demo
), initialiseer je Go Modules met:bashgo mod init go-servbay-demo
1Deze opdracht genereert een
go.mod
bestand om dependencies bij te houden.Schrijf Go-code:
Creëer een nieuw bestand genaamdmain.go
en plak onderstaande code: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" // Hier wordt de poort gedefinieerd waarop geluisterd wordt log.Printf("Go webserver start op poort %s...", port) log.Printf("Bezoek deze via http://localhost:%s", port) // Start de HTTP-server err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Fout bij starten 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
27Deze code definieert een eenvoudige HTTP-server die luistert op poort 8080 en bij elk request een tekstbericht retourneert met “Hello from Go on ServBay!”, de hostname en het pad.
Run je Go-applicatie:
Zorg dat je nog steeds in ServBay’s terminal in het projectmapje zit (/Applications/ServBay/www/go-servbay-demo
). Compileer en run je Go-programma met:bashgo run main.go
1Als alles goed gaat, zie je in de terminal logs zoals:
2024/05/20 15:00:00 Go webserver start op poort 8080... 2024/05/20 15:00:00 Bezoek deze via http://localhost:8080
1
2De applicatie bezoeken:
Open een browser en ga naarhttp://localhost:8080
. Je zou een output moeten zien als “Hello from Go on ServBay! Hostname: jouw-mac-hostname Path: /”.
Reverse proxy instellen via ServBay webconfiguratie (sterk aanbevolen)
Hoewel je rechtstreeks kunt werken met localhost:8080
, is het in lokale ontwikkeling vaak handiger om een eigen domeinnaam te gebruiken (zoals go-app.servbay.demo
) en je Go-app via ServBay’s webserver (Caddy, Apache of Nginx) door te sturen met een reverse proxy. Zo kun je jouw Go-app bereiken via standaard HTTP/HTTPS poorten en profiteren van features zoals automatische HTTPS en integratie met andere diensten.
- Website aanmaken in ServBay:
- Open ServBay GUI en ga naar het gedeelte
Websites
. - Klik op
Website toevoegen
. - Domeinnaam: Voer een lokale domeinnaam in zoals
go-app.servbay.demo
. - Websitetype: Kies Reverse Proxy.
- IP-adres: Vul in
127.0.0.1
. - Poort: Vul in
8080
.
- Open ServBay GUI en ga naar het gedeelte
Configuratie opslaan en herstarten:
Sla de webconfiguratie wijzigingen in ServBay op. Zorg dat je de betreffende webserver (Caddy of Nginx) daarna herstart of herlaadt zodat de nieuwe instelling actief wordt.De applicatie bezoeken via domein:
Nu kun je jouw Go webapp viahttps://go-app.servbay.demo
in de browser benaderen. ServBay’s webserver verwerkt je verzoeken en stuurt deze transparant door naar je Go-applicatie.
Go-versies beheren
ServBay maakt het erg eenvoudig om tussen verschillende Go-versies te wisselen.
- Versie wisselen: In ServBay GUI, ga naar
Packages
→Go
. Hier zie je alle geïnstalleerde Go-versies. Via het menuInstellingen
kun je een specifieke versie instellen als standaard. - Wisseling controleren: Open een nieuwe terminal en voer
go version
uit; controleer of de juiste (recent gekozen) versie actief is.
Project-specifiek Go-versiebeheer met .servbay.config
Naast globaal wisselen, kun je in ServBay projectmatig een Go-versie toewijzen door een bestandsnaam .servbay.config
in de root van je project te plaatsen.
Hoe werkt het?:
Telkens wanneer je via ServBay’s ingebouwde terminal een map binnen gaat waar een .servbay.config
staat, wordt deze automatisch gelezen. Het bestand kan bijvoorbeeld via de GO_VERSION
sleutel de Go-versie van de huidige terminalsessie tijdelijk aanpassen zodat het go
commando die versie gebruikt.
Bestandsindeling:
.servbay.config
is een simpel tekstbestand. Geef de Go-versie op met een regel GO_VERSION
:
ini
# Voorbeeld van .servbay.config bestand
# Deze project gebruikt Go versie 1.22
GO_VERSION=1.22
# Je kunt ook andere tools en versies instellen
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... overige instellingen ...
# GOPROXY=https://goproxy.cn,direct
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Voordelen:
- Automatisch omschakelen: Je hoeft niet handmatig de globale versie aan te passen – de juiste Go-versie wordt voor je project telkens automatisch gebruikt.
- Projectisolatie: Elk project compileert en draait in zijn eigen Go omgeving; verwarring door versieconflicten wordt voorkomen.
- Samenwerken in teams: Commit het
.servbay.config
bestand in je Git repository en teamleden beschikken direct over dezelfde versie-setup bij het clonen.
Praktijkvoorbeeld:
Stel, je hebt twee projecten:
project-a
vereist Go 1.12project-b
gebruikt Go 1.22
Plaats in ieder project een eigen .servbay.config
bestand:
/Applications/ServBay/www/project-a/.servbay.config
:iniGO_VERSION=1.12
1/Applications/ServBay/www/project-b/.servbay.config
:iniGO_VERSION=1.22
1
Wanneer je met ServBay’s terminal werkt:
cd /Applications/ServBay/www/project-a
→go version
toont Go 1.12.xcd /Applications/ServBay/www/project-b
→go version
toont Go 1.22.x
Let op: .servbay.config
bepaalt alleen de basis Go-versie binnen ServBay. Voor dependency management per project blijft gebruik van Go Modules (go.mod
) aanbevolen.
Veelgestelde vragen (FAQ)
Vraag: Ik krijg “command not found” als ik het
go
commando in de ServBay-terminal uitvoer?Antwoord: Controleer allereerst of je terminal juist de ServBay PATH-omgevingsvariabelen gebruikt. Check tevens of je via de GUI bij
Packages
→Go
minimaal één versie hebt geïnstalleerd én geactiveerd als standaard.Vraag: Hoe update ik Go naar de nieuwste versie in ServBay?
Antwoord: Kijk regelmatig bij
Packages
→Go
in ServBay. Als er nieuwe versies worden ondersteund, verschijnen die vanzelf in de lijst en kun je ze direct installeren. Switch daarna in de GUI naar de nieuwe versie om deze te gebruiken.Vraag: Go Modules downloaden traag of dependency-problemen – wat nu?
Antwoord: Standaard gebruikt Go Modules
proxy.golang.org
voor dependency downloads. In China of met beperkte internettoegang kan dit problemen geven. Je kunt een snellere proxy instellen via de configuratie vanGOPROXY
, bijvoorbeeldhttps://goproxy.cn
ofhttps://goproxy.io
. Dit kun je in de ServBay-instellingen of in.servbay.config
(zoalsGOPROXY=https://goproxy.cn,direct
) regelen.Vraag: Mijn Go webapp zegt dat de poort bezet is (“address already in use”) bij het starten?
Antwoord: Dit betekent dat de door jou gekozen poort (bijv. 8080) al in gebruik is door een ander proces. Je kunt óf je Go code aanpassen naar een vrije poort (zoals 8081 of 9000), óf achterhalen welk proces de poort bezet en dat stoppen. Op macOS kun je
lsof -i :<poortnummer>
(bijvoorbeeldlsof -i :8080
) gebruiken om de PID te vinden en deze metkill <PID>
beëindigen.Vraag: Wat is het verschil tussen
.servbay.config
en globale Go-versieswitch? Wanneer gebruik ik wat?Antwoord: Globaal switchen (via ServBay GUI) wijzigt de standaard Go-versie voor het hele systeem.
.servbay.config
biedt juist project-specifiek overschrijven; iedere keer als je een projectmap binnengaat verandert de actieve Go-versie tijdelijk. Wij raden het gebruik van.servbay.config
aan voor projecten met unieke vereisten – dit garandeert isolation en reproduceerbare builds, vooral als je meerdere projecten met verschillende Go-versies onderhoudt. Globale switch gebruik je vooral om snel een standaard voorkeursversie te kiezen.
Samenvatting
ServBay biedt ontwikkelaars op macOS een extreem efficiënte en gebruiksvriendelijke lokale omgeving voor Go (Golang) ontwikkeling. Dankzij het eenvoudige grafische beheer kun je snel meerdere Go-versies installeren, beheren en via .servbay.config
per project een specifieke versie instellen. In combinatie met dependency management via Go Modules en reverse proxy via ServBay’s webservers kun je vliegensvlug Go-applicaties bouwen, runnen en testen. ServBay verlaagt de drempel van complexe omgevingconfiguraties drastisch, zodat je je volledig kunt richten op het schrijven en innoveren van Go-code.