Ich habe eine Reihe von Go-Projekten studiert und es gibt einiges an Abwechslung. Sie können feststellen, wer von C und wer von Java kommt, da der erstere Speicherauszug fast alles im Stammverzeichnis des Projekts in einem mainPaket enthält und der letztere dazu neigt, alles in ein srcVerzeichnis zu stellen. Beides ist jedoch nicht optimal. Beide haben Konsequenzen, da sie sich auf Importpfade auswirken und darauf, wie andere sie wiederverwenden können.
Um die besten Ergebnisse zu erzielen, habe ich den folgenden Ansatz ausgearbeitet.
myproj/
main/
mypack.go
mypack.go
Wo mypack.goist package mypackund main/mypack.goist (offensichtlich) package main.
Wenn Sie zusätzliche Unterstützungsdateien benötigen, haben Sie zwei Möglichkeiten. Bewahren Sie sie entweder alle im Stammverzeichnis auf oder speichern Sie private Supportdateien in einem libUnterverzeichnis. Z.B
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Oder
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Legen Sie die Dateien nur in einem libVerzeichnis ab, wenn sie nicht von einem anderen Projekt importiert werden sollen. Mit anderen Worten, wenn es sich um private Supportdateien handelt. Das ist die Idee dahinter, liböffentliche von privaten Schnittstellen zu trennen.
Wenn Sie die Dinge auf diese Weise myproj.org/mypackausführen , erhalten Sie einen schönen Importpfad, um den Code in anderen Projekten wiederzuverwenden. Wenn Sie verwenden, haben libinterne Support-Dateien einen Importpfad, der darauf hinweist myproj.org/lib/mysupport.
Verwenden Sie beim Erstellen des Projekts main/mypackz go build main/mypack. Wenn Sie mehr als eine ausführbare Datei haben, können Sie diese auch unter trennen, mainohne separate Projekte erstellen zu müssen. zB main/myfoo/myfoo.gound main/mybar/mybar.go.