Einführung
In diesem Artikel erfahren Sie, wasGOPATH
ist, wie es funktioniert und wie es eingerichtet wird. Dies ist ein entscheidender Schritt für das Einrichten einer Go-Entwicklungsumgebung sowie für das Verständnis, wie Go Quelldateien findet, installiert und erstellt. In diesem Artikel verwenden wirGOPATH
, wenn wir uns auf das Konzept der Ordnerstruktur beziehen, die wir diskutieren werden. Wir werden$GOPATH
verwenden, um auf die Umgebungsvariable zu verweisen, die Go verwendet, um die Ordnerstruktur zu finden.
MitGo Workspace verwaltet Go unsere Quelldateien, kompilierten Binärdateien und zwischengespeicherten Objekte, die später für eine schnellere Kompilierung verwendet werden. Es ist typisch und auch ratsam, nur einen Go-Arbeitsbereich zu haben, obwohl es möglich ist, mehrere Bereiche zu haben. DasGOPATH
fungiert als Stammordner eines Arbeitsbereichs.
Festlegen der Umgebungsvariablen$GOPATH
Die Umgebungsvariable$GOPATH
listet Orte auf, an denen Go nach Go-Arbeitsbereichen suchen kann.
Standardmäßig geht Go davon aus, dass sich der Speicherort vonGOPATH
bei$HOME/go
befindet, wobei$HOME
das Stammverzeichnis unseres Benutzerkontos auf unserem Computer ist. Wir können dies ändern, indem wir die Umgebungsvariable$GOPATH
festlegen. Folgen Sie diesem Tutorial für weitere Studien zureading and setting environment variables in Linux.
Weitere Informationen zum Festlegen der Variablen$GOPATH
finden Sie unter Godocumentation.
Darüber hinaus führt dieserseries die Installation von Go und das Einrichten einer Go-Entwicklungsumgebung durch.
$GOPATH
ist nicht$GOROOT
In$GOROOT
befindet sich der Code, der Compiler und das Tool von Go - dies istnotunser Quellcode. Das$GOROOT
ist normalerweise so etwas wie/usr/local/go
. Unsere$GOPATH
sind normalerweise so etwas wie$HOME/go
.
Obwohl wir die Variable$GOROOT
nicht mehr speziell einrichten müssen, wird in älteren Materialien immer noch auf sie verwiesen.
Lassen Sie uns nun die Struktur des Go-Arbeitsbereichs erläutern.
Anatomie des Go-Arbeitsbereichs
Innerhalb eines Go-Arbeitsbereichs oderGOPATH
gibt es drei Verzeichnisse:bin
,pkg
undsrc
. Jedes dieser Verzeichnisse hat eine besondere Bedeutung für die Go-Toolkette.
.
├── bin
├── pkg
└── src
└── github.com/foo/bar
└── bar.go
Werfen wir einen Blick auf jedes dieser Verzeichnisse.
Im Verzeichnis$GOPATH/bin
platziert Go Binärdateien, diego install
kompiliert. Unser Betriebssystem verwendet die Umgebungsvariable$PATH
, um binäre Anwendungen zu finden, die ohne vollständigen Pfad ausgeführt werden können. Es wird empfohlen, dieses Verzeichnis zu unserer globalen Variablen$PATH
hinzuzufügen.
Wenn wir beispielsweise$GOPATH/bin
nicht zu$PATH
hinzufügen, um ein Programm von dort aus auszuführen, müssen wir Folgendes ausführen:
$GOPATH/bin/myapp
Wenn$GOPATH/bin
zu$PATH
hinzugefügt wird, können wir denselben Aufruf wie folgt ausführen:
myapp
Im Verzeichnis$GOPATH/pkg
peichert Go vorkompilierte Objektdateien, um das nachfolgende Kompilieren von Programmen zu beschleunigen. Normalerweise müssen die meisten Entwickler nicht auf dieses Verzeichnis zugreifen. Wenn Sie Probleme mit der Kompilierung haben, können Sie dieses Verzeichnis sicher löschen, und Go erstellt es dann neu.
Im Verzeichnissrc
müssen sich alle.go
-Dateien oder der Quellcode befinden. Dies sollte nicht mit dem Quellcode verwechselt werden, den das Go-Tool verwendet und der sich bei$GOROOT
befindet. Beim Schreiben von Go-Anwendungen, -Paketen und -Bibliotheken werden diese Dateien unter$GOPATH/src/path/to/code
abgelegt.
Was sind Pakete?
Der 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 aus demselben Paket enthalten. Pakete werden mit allen vom Benutzer geschriebenen Go-Quelldateien im Verzeichnis$GOPATH/src
gespeichert. Wir können die Paketauflösung verstehen, indem wir verschiedene Pakete importieren.
Wenn unser Code bei$GOPATH/src/blue/red
liegt, sollte sein Paketnamered
sein.
Die Importanweisung für das Paketred
lautet:
import "blue/red"
Pakete, die in Quellcode-Repositorys wie GitHub und BitBucket gespeichert sind, haben den vollständigen Speicherort des Repositorys als Teil ihres Importpfads.
Zum Beispiel würden wir den Quellcode beihttps://github.com/gobuffalo/buffalo unter Verwendung des folgenden Importpfads importieren:
import "github.com/gobuffalo/buffalo"
Daher befindet sich dieser Quellcode auf der Festplatte an folgendem Speicherort:
$GOPATH/src/github.com/gobuffalo/buffalo
Fazit
In diesem Artikel haben wir dieGOPATH
als eine Reihe von Ordnern besprochen, in denen Go erwartet, dass unser Quellcode lebt, sowie was diese Ordner sind und was sie enthalten. Wir haben erläutert, wie Sie diesen Speicherort von der Standardeinstellung von$HOME/go
auf die Auswahl des Benutzers ändern können, indem Sie die Umgebungsvariable$GOPATH
festlegen. Schließlich wurde erläutert, wie in dieser Ordnerstruktur nach Paketen gesucht wird.
Go Modules wurde in Go 1.11 eingeführt und soll Go Workspaces undGOPATH
ersetzen. Es wird empfohlen, mit der Verwendung von Modulen zu beginnen. Einige Umgebungen, z. B. Unternehmensumgebungen, sind jedoch möglicherweise nicht bereit, Module zu verwenden.
DasGOPATH
ist einer der schwierigeren Aspekte beim Einrichten von Go, aber sobald es eingerichtet ist, können wir es normalerweise vergessen.