go — Das Kommandozeilen-Werkzeug für Go

Praxis-Guide zur go-Toolchain: build, run, test und mod für Module, Workspaces, Cross-Compiling und Formatierung.

go ist das eine Kommandozeilen-Werkzeug, das die komplette Go-Toolchain bündelt: Du kompilierst und startest Programme mit go run und go build, führst Tests und Benchmarks mit go test aus und verwaltest deine Abhängigkeiten über Go-Module (go mod). Statt eines separaten Build-Systems oder Paketmanagers steckt alles in diesem einen Binary – inklusive Formatierung, statischer Analyse, Code-Generierung und Profiling. Dieser Guide führt dich durch die wichtigsten Befehle für den Alltag, vom ersten go run main.go bis zum Cross-Compiling und zur Modul-Pflege.

Bauen & Ausführen

go run <file> — Kompiliert ein Go-Programm und führt es aus.

go run main.go

go run . — Kompiliert das aktuelle Paket und führt es aus.

go run .

go build — Kompiliert das aktuelle Paket.

go build

go build -o <name> — Kompiliert mit eigenem Namen für die Ausgabe-Binary.

go build -o myapp

GOOS=<os> GOARCH=<arch> go build — Cross-Compiling für ein anderes Betriebssystem bzw. eine andere Architektur.

GOOS=linux GOARCH=amd64 go build -o myapp-linux

go install — Kompiliert die Binary und installiert sie nach $GOPATH/bin.

go install

Module

go mod init <module> — Initialisiert ein neues Go-Modul.

go mod init github.com/user/myapp

go mod tidy — Ergänzt fehlende und entfernt nicht genutzte Abhängigkeiten.

go mod tidy

go get <package> — Fügt eine Abhängigkeit hinzu oder aktualisiert sie.

go get github.com/gin-gonic/gin@latest

go get <package>@<version> — Holt eine bestimmte Version einer Abhängigkeit.

go get github.com/gin-gonic/gin@v1.9.1

go mod download — Lädt alle Abhängigkeiten in den lokalen Cache.

go mod download

go mod vendor — Kopiert die Abhängigkeiten in ein vendor-Verzeichnis.

go mod vendor

go mod graph — Gibt den Abhängigkeitsgraphen des Moduls aus.

go mod graph

Tests

go test — Führt die Tests im aktuellen Paket aus.

go test

go test ./... — Führt die Tests aller Pakete rekursiv aus.

go test ./...

go test -v — Führt die Tests mit ausführlicher Ausgabe aus.

go test -v

go test -run <regex> — Führt nur die Tests aus, die auf ein Muster passen.

go test -run TestParse

go test -cover — Zeigt die Testabdeckung in Prozent.

go test -cover ./...

go test -coverprofile=cover.out — Erzeugt ein Abdeckungsprofil.

go test -coverprofile=cover.out && go tool cover -html=cover.out

go test -bench . — Führt Benchmarks aus.

go test -bench . -benchmem

Formatieren & Linten

go fmt ./... — Formatiert alle Go-Quelldateien.

go fmt ./...

gofmt -d <file> — Zeigt das Formatierungs-Diff an, ohne Änderungen zu schreiben.

gofmt -d main.go

go vet ./... — Führt eine statische Analyse aus, um mögliche Fehler zu finden.

go vet ./...

go generate ./... — Führt go:generate-Direktiven in den Quelldateien aus.

go generate ./...

Werkzeuge & Umgebung

go env — Zeigt alle Go-Umgebungsvariablen.

go env

go env GOPATH — Zeigt eine bestimmte Umgebungsvariable.

go env GOROOT

go env -w <KEY>=<value> — Setzt eine Go-Umgebungsvariable dauerhaft.

go env -w GOPROXY=direct

go version — Zeigt die installierte Go-Version.

go version

go doc <package> — Zeigt die Dokumentation zu einem Paket oder Symbol.

go doc fmt.Println

go tool pprof <profile> — Analysiert ein CPU- oder Speicher-Profil.

go tool pprof cpu.prof

Fazit

go vereint Compiler, Test-Runner, Paketmanager und Formatierer in einem einzigen, schnell zu lernenden Werkzeug – genau das macht den Go-Alltag so reibungslos. Hältst du dich an die Modul-Befehle (go mod init, go mod tidy), bleibt dein Abhängigkeitsbaum sauber und reproduzierbar. Ein Wort zur Vorsicht: go install und go get laden, kompilieren und führen fremden Code samt etwaiger Build-Schritte aus – ziehe nur Module, denen du vertraust, und verlasse dich auf die Schutzschicht von GOPROXY und GOSUMDB, die Versionen prüft und gegen unbemerkte Manipulation absichert. Bei seltsamen Build-Fehlern hilft oft ein sauberer Cache per go clean -cache.

  • go.dev/doc – offizielle Dokumentation zu Sprache, Toolchain und Modulen (englisch)
  • Go Modules Reference – Referenz zu Modulen, Versionierung, GOPROXY und GOSUMDB (englisch)

Verwandte Kommandos

  • artisan – Kommandozeilen-Werkzeug des Laravel-PHP-Frameworks
  • cargo – Build-Werkzeug und Paketmanager für Rust
  • composer – Abhängigkeitsverwaltung für PHP