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.gogo run . — Kompiliert das aktuelle Paket und führt es aus.
go run .go build — Kompiliert das aktuelle Paket.
go buildgo build -o <name> — Kompiliert mit eigenem Namen für die Ausgabe-Binary.
go build -o myappGOOS=<os> GOARCH=<arch> go build — Cross-Compiling für ein anderes Betriebssystem bzw. eine andere Architektur.
GOOS=linux GOARCH=amd64 go build -o myapp-linuxgo install — Kompiliert die Binary und installiert sie nach $GOPATH/bin.
go installModule
go mod init <module> — Initialisiert ein neues Go-Modul.
go mod init github.com/user/myappgo mod tidy — Ergänzt fehlende und entfernt nicht genutzte Abhängigkeiten.
go mod tidygo get <package> — Fügt eine Abhängigkeit hinzu oder aktualisiert sie.
go get github.com/gin-gonic/gin@latestgo get <package>@<version> — Holt eine bestimmte Version einer Abhängigkeit.
go get github.com/gin-gonic/gin@v1.9.1go mod download — Lädt alle Abhängigkeiten in den lokalen Cache.
go mod downloadgo mod vendor — Kopiert die Abhängigkeiten in ein vendor-Verzeichnis.
go mod vendorgo mod graph — Gibt den Abhängigkeitsgraphen des Moduls aus.
go mod graphTests
go test — Führt die Tests im aktuellen Paket aus.
go testgo 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 -vgo test -run <regex> — Führt nur die Tests aus, die auf ein Muster passen.
go test -run TestParsego 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.outgo test -bench . — Führt Benchmarks aus.
go test -bench . -benchmemFormatieren & Linten
go fmt ./... — Formatiert alle Go-Quelldateien.
go fmt ./...gofmt -d <file> — Zeigt das Formatierungs-Diff an, ohne Änderungen zu schreiben.
gofmt -d main.gogo 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 envgo env GOPATH — Zeigt eine bestimmte Umgebungsvariable.
go env GOROOTgo env -w <KEY>=<value> — Setzt eine Go-Umgebungsvariable dauerhaft.
go env -w GOPROXY=directgo version — Zeigt die installierte Go-Version.
go versiongo doc <package> — Zeigt die Dokumentation zu einem Paket oder Symbol.
go doc fmt.Printlngo 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.
Weiterführende Links
- go.dev/doc – offizielle Dokumentation zu Sprache, Toolchain und Modulen (englisch)
- Go Modules Reference – Referenz zu Modulen, Versionierung,
GOPROXYundGOSUMDB(englisch)