go install
ist Teil des Workflows bei lokaler Arbeit. Angenommen, Sie möchten eine Bibliothek verwenden, aber aus irgendeinem Grund ist eine Änderung erforderlich. Du würdest:
go get -d library
, die es nur herunterlädt;
- Nehmen Sie die Änderung am heruntergeladenen Paket vor.
go install library
um die lokale Version zu installieren.
Soweit ich weiß go get
, gibt es keine Flags, die darauf hinweisen, dass es nicht heruntergeladen werden sollte, daher kann es go install
hier nicht ersetzt werden.
Der gleiche Workflow wird verwendet, wenn Sie ein neues Paket von Grund auf neu entwickeln.
go get ./path/to/local_package
, und es würde sich genauso verhalten, als ob ich es verwendet hättego install ./path/to/local_package
, oder? Da es in diesem Fall keinen Download-Prozess gibt.go install
macht Ihr Ziel deutlicher, aber ich nehme an, beide würden dasselbe erreichen. Ich habe mit ein paar Paketen getestet, einschließlich solcher, die alsmain
gleichwertig deklariert wurden . Die Dokumente zu diesem Befehl fehlen sehr.go get
aber nicht fürgo install
. Wie hängt das mit dieser Beschreibung zusammen?go get
stattgo install
in Ihrem dritten Aufzählungspunkt auch verwenden, dago get
die Bibliothek nicht erneut heruntergeladen wird (es sei denn, Sie fügen hinzu-u
). Sie können es auch verwenden,go get
wenn Sie eine Bibliothek von Grund auf neu schreiben.go install
scheint völlig überflüssig.go get
macht zwei Hauptaufgaben in dieser Reihenfolge:lädt dann die in
$GOPATH/src/<import-path>
den Importpfaden genannten Pakete (Quellcode) und deren Abhängigkeiten herunter und speichert sieführt a aus
go install
Das
-d
Flag (go get -d
) weistgo get
an, nach dem Herunterladen der Pakete anzuhalten. das heißt, es weistgo get
an, dies nicht zu tungo install
der Unterschied:
go get
// Überprüfen Sie, ob Pakete heruntergeladen werden müssen, laden Sie sie bei Bedarf herunter und kompilieren Sie siego install
// überspringe den Teil mit dem Download von Paketen, kompiliere einfach (dies wird einen Fehler auslösen, wenn irgendwelche Pakete fehlen)über
GOPATH
UmgebungsvariableDie
GOPATH
Umgebungsvariable wird von den Go-Tools verwendet. Es muss festgelegt werden, um in der Lage zu seinget
,build
undinstall
Pakete, und es gibt den Speicherort Ihres Arbeitsbereichs an. Dies ist wahrscheinlich die einzige Umgebungsvariable, die Sie bei der Entwicklung von Go-Code festlegen müssen.Auch hier
GOPATH
sollte das nicht auf die Go-Installation verweisen, sondern auf Ihren Arbeitsbereich.Wenn Sie beispielsweise unter Windows entscheiden, dass sich Ihr Arbeitsbereich in befindet
c:\gowork\
, müssen Sie denGOPATH
Wert als festlegenc:\gowork
Ihr Quellcode sollte sich an befinden
c:\gowork\src\<some project folder>\
und nachdem Siego get
an der Eingabeaufforderung von innen ausgeführtc:\gowork\src\<some project folder>\
haben, sehen Sie dasc:\gowork\bin\
undc:\gowork\pkg\
wird erstellt.quelle
go install
lädt das Paket in modulabhängiger Konfiguration herunter.Beachten Sie, dass go 1.16 (Q1 2021) diesen Unterschied deutlicher macht und mit CL 266360 als Teil von Ausgabe 40276 implementiert wurde :
quelle