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
Goom 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
Installerenknop 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 version1
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/arm641
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-demo1
2
3Initialiseer Go Modules:
In de hoofddirectory van het project (go-servbay-demo), initialiseer je Go Modules met:bashgo mod init go-servbay-demo1Deze opdracht genereert een
go.modbestand om dependencies bij te houden.Schrijf Go-code:
Creëer een nieuw bestand genaamdmain.goen 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.go1Als 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:80801
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.demoin 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 menuInstellingenkun je een specifieke versie instellen als standaard. - Wisseling controleren: Open een nieuwe terminal en voer
go versionuit; 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,direct1
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.configbestand in je Git repository en teamleden beschikken direct over dezelfde versie-setup bij het clonen.
Praktijkvoorbeeld:
Stel, je hebt twee projecten:
project-avereist Go 1.12project-bgebruikt Go 1.22
Plaats in ieder project een eigen .servbay.config bestand:
/Applications/ServBay/www/project-a/.servbay.config:iniGO_VERSION=1.121/Applications/ServBay/www/project-b/.servbay.config:iniGO_VERSION=1.221
Wanneer je met ServBay’s terminal werkt:
cd /Applications/ServBay/www/project-a→go versiontoont Go 1.12.xcd /Applications/ServBay/www/project-b→go versiontoont 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
gocommando 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→Gominimaal éé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→Goin 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.orgvoor dependency downloads. In China of met beperkte internettoegang kan dit problemen geven. Je kunt een snellere proxy instellen via de configuratie vanGOPROXY, bijvoorbeeldhttps://goproxy.cnofhttps://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.configen globale Go-versieswitch? Wanneer gebruik ik wat?Antwoord: Globaal switchen (via ServBay GUI) wijzigt de standaard Go-versie voor het hele systeem.
.servbay.configbiedt juist project-specifiek overschrijven; iedere keer als je een projectmap binnengaat verandert de actieve Go-versie tijdelijk. Wij raden het gebruik van.servbay.configaan 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.
