Den GOPATH verstehen
Einführung
Dieser Artikel zeigt Ihnen, was der GOPATH
ist, wie er funktioniert und wie man ihn einrichtet. Dies ist ein wichtiger Schritt, um eine Go-Entwicklungsumgebung einzurichten und um zu verstehen, wie Go Quelldateien findet, installiert und baut. In diesem Artikel werden wir GOPATH
verwenden, wenn wir uns auf das Konzept der Ordnerstruktur beziehen, die wir besprechen werden. Wir werden $GOPATH
verwenden, um uns auf die Umgebungsvariable zu beziehen, die Go verwendet, um die Ordnerstruktur zu finden.
Ein Go-Arbeitsbereich ist die Art und Weise, wie Go unsere Quelldateien, kompilierten Binärdateien und zwischengespeicherten Objekte verwaltet, die später für eine schnellere Kompilierung verwendet werden. Es ist typisch und wird auch empfohlen, nur einen Go-Workspace zu haben, obwohl es möglich ist, mehrere Spaces zu haben. GOPATH
fungiert als Stammverzeichnis eines Arbeitsbereichs.
Setzen der Umgebungsvariable $GOPATH
Die Umgebungsvariable $GOPATH
listet die Orte auf, an denen Go nach Go-Arbeitsbereichen suchen soll.
Standardmäßig nimmt Go an, dass sich unser GOPATH
unter $HOME/go
befindet, wobei $HOME
das Stammverzeichnis unseres Benutzerkontos auf unserem Computer ist. Wir können dies ändern, indem wir die Umgebungsvariable $GOPATH
setzen. Weitere Informationen finden Sie in diesem Tutorial über das Lesen und Setzen von Umgebungsvariablen unter Linux.
Weitere Informationen über das Setzen der $GOPATH
-Variable finden Sie in der Go-Dokumentation.
Außerdem führt diese Serie durch die Installation von Go und das Einrichten einer Go-Entwicklungsumgebung.
$GOPATH ist nicht $GOROOT
Das $GOROOT
ist der Ort, an dem der Code, der Compiler und die Werkzeuge von Go liegen – es ist nicht unser Quellcode. Das $GOROOT
ist normalerweise etwas wie /usr/local/go
. Unser $GOPATH
ist normalerweise so etwas wie $HOME/go
.
Während wir die $GOROOT
-Variable nicht mehr speziell einrichten müssen, wird sie in älteren Materialien immer noch referenziert.
Lassen Sie uns nun die Struktur des Go-Arbeitsbereichs besprechen.
Anatomie des Go-Arbeitsbereichs
Innerhalb eines Go-Arbeitsbereichs, oder GOPATH
, gibt es drei Verzeichnisse: bin
, pkg
, und src
. Jedes dieser Verzeichnisse hat eine besondere Bedeutung für die Go-Werkzeugkette.
.├── bin├── pkg└── src └── github.com/foo/bar └── bar.go
Lassen Sie uns einen Blick auf jedes dieser Verzeichnisse werfen.
Das Verzeichnis $GOPATH/bin
ist der Ort, an dem Go die Binärdateien ablegt, die go install
kompiliert. Unser Betriebssystem verwendet die Umgebungsvariable $PATH
, um Binäranwendungen zu finden, die ohne einen vollständigen Pfad ausgeführt werden können. Es wird empfohlen, dieses Verzeichnis zu unserer globalen $PATH
-Variable hinzuzufügen.
Wenn wir zum Beispiel $GOPATH/bin
nicht zu $PATH
hinzufügen, um ein Programm von dort aus auszuführen, müssten wir Folgendes ausführen:
- $GOPATH/bin/myapp
Wenn $GOPATH/bin
zu $PATH
hinzugefügt wird, können wir denselben Aufruf wie folgt machen:
- myapp
Das $GOPATH/pkg
-Verzeichnis ist der Ort, an dem Go vorkompilierte Objektdateien speichert, um die spätere Kompilierung von Programmen zu beschleunigen. In der Regel werden die meisten Entwickler nicht auf dieses Verzeichnis zugreifen müssen. Wenn Sie Probleme mit der Kompilierung haben, können Sie dieses Verzeichnis löschen und Go wird es dann neu erstellen.
Das src
-Verzeichnis ist der Ort, an dem sich alle unsere .go
-Dateien, also der Quellcode, befinden müssen. Dies ist nicht zu verwechseln mit dem Quellcode, den das Go-Tooling verwendet und der sich im Verzeichnis $GOROOT
befindet. Wenn wir Go-Anwendungen, -Pakete und -Bibliotheken schreiben, werden wir diese Dateien unter $GOPATH/src/path/to/code
ablegen.
Was sind Pakete?
Go-Code ist in Paketen organisiert. Ein Paket repräsentiert alle Dateien in einem einzigen Verzeichnis auf der Festplatte. Ein Verzeichnis kann nur bestimmte Dateien desselben Pakets enthalten. Pakete werden zusammen mit allen vom Benutzer geschriebenen Go-Quelldateien unter dem Verzeichnis $GOPATH/src
gespeichert. Wir können die Paketauflösung verstehen, indem wir verschiedene Pakete importieren.
Wenn unser Code im Verzeichnis $GOPATH/src/blue/red
liegt, dann sollte der Paketname red
lauten.
Die Importanweisung für das Paket red
würde lauten:
import "blue/red"
Pakete, die in Quellcode-Repositories wie GitHub und BitBucket liegen, haben den vollständigen Ort des Repositories als Teil ihres Importpfades.
Zum Beispiel würden wir den Quellcode unter https://github.com/gobuffalo/buffalo mit folgendem Importpfad importieren:
import "github.com/gobuffalo/buffalo"
Daher würde sich dieser Quellcode an folgendem Ort auf der Festplatte befinden:
$GOPATH/src/github.com/gobuffalo/buffalo
Abschluss
In diesem Artikel haben wir GOPATH
als eine Reihe von Ordnern besprochen, in denen Go unseren Quellcode erwartet, sowie was diese Ordner sind und was sie enthalten. Wir haben besprochen, wie man diesen Ort von der Vorgabe $HOME/go
auf die Wahl des Benutzers ändern kann, indem man die Umgebungsvariable $GOPATH
setzt. Schließlich haben wir besprochen, wie Go nach Paketen innerhalb dieser Ordnerstruktur sucht.
Die in Go 1.11 eingeführten Go-Module sollen Go-Workspaces und die GOPATH
ersetzen. Es wird zwar empfohlen, mit der Verwendung von Modulen zu beginnen, aber einige Umgebungen, wie z. B. Unternehmensumgebungen, sind möglicherweise noch nicht bereit für die Verwendung von Modulen.
Das GOPATH
ist einer der kniffligeren Aspekte beim Einrichten von Go, aber wenn es einmal eingerichtet ist, können wir es normalerweise vergessen.
Leave a Reply