GOPATH und GOROOT in Go: Richtige Werte und häufige Fehler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

GOPATH und GOROOT: Richtige Werte und häufige Fehler

\n\n

Wenn Sie gerade erst anfangen, Go zu lernen, werden Sie früher oder später auf die mysteriösen Abkürzungen GOPATH und GOROOT stoßen. Die Frage „What should be the values of GOPATH and GOROOT?“ ist eine der beliebtesten auf Stack Overflow – und das aus gutem Grund. Anfänger verwechseln die Werte, setzen sie falsch und erhalten seltsame Fehler beim Bauen ihrer Projekte.

\n\n

In diesem Artikel erklären wir Ihnen einfach und verständlich, wozu diese Variablen gut sind, welche Standardwerte Sie verwenden sollten und wie Sie auf den modernen Ansatz mit go modules umsteigen. Los geht's!

\n\n

Was ist GOROOT?

\n\n

GOROOT ist der Pfad zu dem Ordner, in dem der Go-Compiler selbst installiert ist. In diesem Ordner befinden sich die Standardpakete (wie fmt, net, os usw.) sowie die Binärdateien go, gofmt und andere Werkzeuge.

\n\n

Die meisten Entwickler müssen GOROOT nicht explizit setzen. Wenn Sie Go über das offizielle Installationsprogramm oder einen Paketmanager installiert haben, kennt der Compiler seinen eigenen Speicherort.

\n\n

Wie überprüfe ich den aktuellen Wert von GOROOT?

\n

Öffnen Sie ein Terminal und führen Sie folgenden Befehl aus:

\n
go env GOROOT
\n\n

Beispielausgabe unter Linux:

\n
/usr/local/go
\n\n

Unter Windows (bei Standardinstallation):

\n
C:\\Program Files\\Go
\n\n

Wann sollte ich GOROOT ändern?

\n
    \n
  • Wenn Sie den Go-Ordner an einen anderen Ort verschoben haben.
  • \n
  • Wenn Sie mehrere Go-Versionen installiert haben und zwischen ihnen wechseln möchten.
  • \n
  • Wenn Sie Go aus dem Quellcode kompilieren und in ein nicht standardmäßiges Verzeichnis installiert haben.
  • \n
\n\n

In allen anderen Fällen lassen Sie GOROOT in Ruhe – Go kümmert sich selbst darum.

\n\n

Was ist GOPATH?

\n\n

GOPATH ist dagegen eine viel interessantere Variable. Historisch gesehen verlangte Go, dass Ihr gesamter Code in einem einzigen Arbeitsbereich liegt. Dieser Bereich wurde durch GOPATH festgelegt.

\n\n

Standardmäßig zeigt GOPATH auf:

\n
    \n
  • Linux/macOS: $HOME/go
  • \n
  • Windows: %USERPROFILE%\\go
  • \n
\n\n

Innerhalb dieses Ordners gibt es eine Standardstruktur:

\n
go/\n├── bin/        # kompilierte Binärdateien\n├── pkg/        # erstellte Objektdateien und Cache\n└── src/        # Quellcode Ihrer Projekte\n    ├── github.com/\n    │   └── benutzer/\n    │       └── meinprojekt/\n    └── example.com/\n        └── meineapp/
\n\n

Wie überprüfe ich den aktuellen Wert von GOPATH?

\n
go env GOPATH
\n\n

Was sollten GOPATH und GOROOT sein? (Die richtigen Werte)

\n\n

Hier ist die kurze Antwort auf die Hauptfrage:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
VariableStandardwert (Linux/macOS)Standardwert (Windows)
GOROOT/usr/local/goC:\\Program Files\\Go
GOPATH$HOME/go%USERPROFILE%\\go
\n\n

Wichtig: GOPATH und GOROOT müssen unterschiedliche Ordner sein. Setzen Sie sie niemals auf denselben Wert!

\n\n

Typische Fehler und wie man sie behebt

\n\n

Fehler 1: „GOPATH not set“ oder „cannot find package“

\n

Wenn Sie den alten Ansatz (vor Version 1.11-1.13) verwenden, sucht Go nach Paketen innerhalb von $GOPATH/src. Wenn Sie Ihr Projekt an einem anderen Ort abgelegt haben, findet der Compiler es nicht.

\n\n

Lösung:

\n
    \n
  • Entweder verschieben Sie Ihr Projekt in $GOPATH/src.
  • \n
  • Oder

Blogs

Buchempfehlungen