2014-04-10 13 views
6

Ich wollte nur mein Verständnis einer typischen Projekt Ordnerstruktur in einem Go-Projekt, das die Go tool conventions folgt.Go-lang Projekt Ordner Struktur Konvention

Wenn ich ein Paket mit dem Namen my-package schreibe, das ein externes Paket eines Drittanbieters verwendet - other-package. Basierend auf Konventionen, ist diese Verzeichnisstruktur korrekt?

Der Grund, warum ich dies noch einmal frage nach der Dokumentation zu lesen ist, weil im Gegensatz zu anderen Sprachkonventionen, der Benutzer und 3rd-Party-Code in den gleichen Top-Level-Ordnern befindet.

+0

Pwd meiner dir Struktur: '' '/go/src/github.com/github-account-name/project-name '' ' –

+0

ja, das ist in Ordnung, solange die Wurzel ist $ GOPATH –

Antwort

4

via IRC# Go-Nüsse

einer Maschine des Benutzers wird ein gemeinsames $GOPATH/src für alle Projekte. Diese $GOPATH/src könnte dort mehrere Projekte (Benutzer, externe Pakete etc.) haben. Der Benutzer würde einfach die $GOPATH/src/mypackage zu ihrem src Repo übergeben.

Wenn Sie separate Verzeichnisse für Ihre src- und 3rd-Party-Paketquellen haben möchten, fügen Sie einen anderen Pfad zu $GOPATH hinzu. go get lädt die 3rd-Party-Pakete in diesen Pfad. go-get lädt dritte Pakete zum ersten Pfad herunter, der in dem von $GOPATH angegebenen Array von Pfaden gefunden wird.

1

Golang ist so verschieden zu anderen Sprachen in Bezug auf dieses Thema, ich kann sagen, dass in meinen ersten Tagen mit Golang dieses Thema schwer zu verstehen war. Ich empfehle Ihnen, alle Projekte auf $ GOPATH/src zu haben und nicht mehr als einen $ GOPATH zu haben.

Auf golang wir angepasst darauf haben, wie sa http://golang.org/doc/code.html (Code-Organisation)

+0

Wie sehen dann Importe für Ihre benutzerdefinierten Pakete aussehen? Sie haben beispielsweise Ihr Projekt in '/ src/project1' und ein Hilfspaket befindet sich unter'/src/project1/helper'. Müssen Sie "project1/myhelper" '' importieren? Es scheint mir viel sauberer zu sein, wenn das Schlüsselwort "project1" weggelassen werden könnte (und dies würde passieren, wenn dies unser einziges Projekt im 'src'-Ordner wäre, da wir' project1' einfach entfernen und alle anderen Dateien und Ordner verschieben würden aufleveln). Können wir das irgendwie machen (obwohl wir noch mehrere Projekte haben)? – veich

Verwandte Themen