Wie mache Pakete mit mehreren Dateien arbeiten, die in golang?
Diese repo hat 3 go-Dateien beginnen alle mit "- Paket Holz".
Verwenden Sie dieses Paket, ich soll um diese in meine GOROOT
und einfach
import lumber
in meinem Programm. Wie Variablen und Datentypen in diesem Paket mit einander verbinden, die über mehrere Dateien? Wie funktioniert der go-compiler weiß, welche Datei zu beginnen, Lesen Sie zuerst?
In Fall möchte ich, das Paket zu Lesen, wo soll ich anfangen zu Lesen, um zu verstehen, das Paket? Was genau ist der Lauf der Dinge hier?
Nicht wahr. Datei Umfang und paketbereich sind in verschiedene Bereiche. Zum Beispiel, die Importe haben nur paketbereich, so catenating alle Quelldateien des Pakets zusammen nicht die Arbeit im Allgemeinen Fall.
okay, also es ist im Grunde wie alle Dateien verkettet in eine einzige große Datei, mit der scope-Regeln in der angegebenen link, den Sie gab, unten, rechts?
Ich denke nicht so. Import-Qualifikation-Datei Gültigkeitsbereich und können nicht reproduziert werden, die durch verknüpfen der Dateien in einem. IOW, zum Beispiel, wird der Bezeichner
es habe! danke!
Bevor Sie etwas in Gehen, das jeder gelesen haben sollte: Wie Schreibe Go Code.
okay, also es ist im Grunde wie alle Dateien verkettet in eine einzige große Datei, mit der scope-Regeln in der angegebenen link, den Sie gab, unten, rechts?
Ich denke nicht so. Import-Qualifikation-Datei Gültigkeitsbereich und können nicht reproduziert werden, die durch verknüpfen der Dateien in einem. IOW, zum Beispiel, wird der Bezeichner
template
können, finden im Paket "text/template" in eine Datei, sondern um-Paket html/template' in anderen Datei. Dieser Bereich ist nicht "aufgehoben", um die Paket-Umfang.es habe! danke!
Bevor Sie etwas in Gehen, das jeder gelesen haben sollte: Wie Schreibe Go Code.
InformationsquelleAutor pymd | 2013-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, du bist nicht "soll um diese in meine GOROOT". Sie sollen ausführen
welche clone das repository in
$GOPATH/src/github.com/jcelliott/lumber
. Dann können Sie das Paket importieren Sie Sie in Ihrem code alsÜber die scoping-Regeln: Erklärungen und Umfang
InformationsquelleAutor zzzz
Zu erarbeiten, jnml Antwort:
Wenn Sie
import "foo/bar"
im code, sind Sie nicht in Bezug auf die source-Dateien (welche sich in$GOPATH/src/foo/bar/
).Stattdessen verweisen Sie auf eine compilierte package-Datei in
$GOPATH/pkg/$GOOS_$GOARCH/foo/bar.a
. Wenn Sie bauen Sie Ihren eigenen code und der compiler feststellt, dass derfoo/bar
Paket noch nicht kompiliert wurde (oder veraltet ist), wird dies automatisch für Sie tun.Er tut dies, indem Sortieren* alle relevanten Quell-Dateien in die
$GOPATH/src/foo/bar
Verzeichnis und bauen Sie in einem einzigenbar.a
- Datei, die es installiert, in der pkg-Verzeichnis. Zusammenstellung dann wieder mit Ihrem eigenen Programm.Dieser Prozess wiederholt sich für alle importierten Pakete und Pakete importiert werden, als auch diejenigen, die alle der Weg nach unten ist die Abhängigkeit der Kette.
* ), Wie die Dateien sortiert werden sollen, hängt davon ab, wie die Datei selbst benannt, und was für eine Art build-tags vorhanden sind, drin.
Für ein tieferes Verständnis, wie dies funktioniert, entnehmen Sie der bauen docs.
InformationsquelleAutor jimt