Den GOPATH verstehen

Einführung

In diesem Artikel erfahren Sie, wasGOPATHist, 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$GOPATHlistet Orte auf, an denen Go nach Go-Arbeitsbereichen suchen kann.

Standardmäßig geht Go davon aus, dass sich der Speicherort vonGOPATHbei$HOME/go befindet, wobei$HOME das Stammverzeichnis unseres Benutzerkontos auf unserem Computer ist. Wir können dies ändern, indem wir die Umgebungsvariable$GOPATHfestlegen. 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$GOROOTnicht 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$PATHhinzuzufü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/pkgpeichert 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 Verzeichnissrcmü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/srcgespeichert. 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 Paketredlautet:

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 dieGOPATHals 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$GOPATHfestlegen. 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 undGOPATHersetzen. 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.