2016-03-24 4 views
4

Wie werden bei der Verwendung von Go Projekte organisiert? Ich bin etwas verwirrt auf dem Arbeitsbereich. Ich habe ein Lesen der folgenden hatte: https://golang.org/doc/code.html#Workspaces ... und dieser Teil hat mich abgeworfen ein wenig:Go - Verfüge ich über einen Arbeitsbereich für alle Projekte oder über einen Arbeitsbereich pro Projekt?

Ein typischer Arbeitsbereich enthält viele Pakete und Befehle viele Source-Repositories enthalten. Die meisten Go-Programmierer behalten ihren gesamten Go-Quellcode und Abhängigkeiten in einem einzigen Arbeitsbereich.

Bedeutet dies, dass es für jedes Projekt, das ich erstelle, ein eigener Arbeitsbereich ist? Wenn beispielsweise zwei Projekte dasselbe Paket verwenden, würde ich zwei Kopien dieses Pakets auf meinem Computer haben.

Oder bedeutet es, dass Sie einen Hauptarbeitsbereich haben und Ihre Projekte diese Pakete teilen?

Etwas verwirrt.

+3

Genau das sagt "Die meisten Go-Programmierer behalten ihren gesamten Go-Quellcode und ihre Abhängigkeiten in einem einzigen Arbeitsbereich" – JimB

+1

Denken Sie daran, dass ein Go-Programm nur mit dem kompiliert wird, was es benötigt: Sie müssen nicht alle Pakete versenden Sie importieren nicht direkt. – elithrar

+1

@elithrar Ich passe mich langsam an. Ich vergesse oft, dass es anders ist als die interpretierten Sprachen, die ich gewohnt bin. Ich denke jetzt darüber nach, wie man ohne all die Pakete nach Github schubsen würde. Ich werde es herausfinden. – BugHunterUK

Antwort

4

Sie haben einen Arbeitsbereich und Projekte teilen die Pakete.

Es ist dort in der overview section:

Go Programmierer normalerweise alle halten ihre Go-Code in einem einzigen Arbeitsbereich.

Beachten Sie, dass sich dies von anderen Programmierumgebungen unterscheidet, in denen jedes Projekt über einen separaten Arbeitsbereich verfügt und Arbeitsbereiche eng mit Versionskontrolldepots verknüpft sind.

bearbeiten: Wenn Sie vendoring verwenden, können Sie effektiv einen separaten Arbeitsbereich für jedes Projekt. Dies bringt Dinge näher zu anderen Programmiersprachen.

3

Bisher verwende ich verschiedene Arbeitsbereiche, wenn ich eine andere Version von Go verwenden möchte oder ich meine private Arbeit von dem Code trennen möchte, mit dem die Kinder und ich Spaß haben. Auch wenn ich mit etwas offenem Quellcode spielen möchte, aber eine einfache Art, es später zu säubern möchte.

So etwas wie

mk /tmp/tmpgo 
cd /tmp/tmpgo 
# Copy or edit a setenv file 
. setenv # I use bash 

Die setenv Datei sieht ungefähr so ​​aus.

export GOROOT=$HOME/go16 
export GOPATH=$PWD 
export GOBIN=$GOPATH/bin 
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH 
export PS1='\[\033[01;32m\]workspacenamehere\[\033[01;33m\] \W\[\033[00m\] ' 

Dies gibt mir einen Go-Arbeitsbereich mit eigenen bin, src, pkg-Unterverzeichnissen. Ich kann alles bekommen, was ich will. Später kann ich das ganze temporäre Verzeichnis löschen, wenn ich möchte. Dinge aus Repositories wie github.com zu bekommen, tendiert dazu, viele Pakete von anderen Mitwirkenden zu bekommen, aber weil es alle in ein sauberes src-Unterverzeichnis bringt, ist es einfach zu finden und zu sehen, was heruntergerissen wurde. Und später ist es noch einfacher, alles wieder aus dem HD zu entfernen.

6

Ich persönlich gerne ein anderes GOPATH pro Projekt haben. Wenn Sie ein Werkzeug verwenden, um den Prozess zu automatisieren, können Sie vg verwenden, die sich um die Verwaltung verschiedener GOPATHs für Ihre Projekte kümmern wird.

Das nette Bit ist, dass es in die meisten Shells integriert und Projekte automatisch erkennt, wie Sie cd sie.

Verwandte Themen