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 main
Paket enthält und der letztere dazu neigt, alles in ein src
Verzeichnis 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.go
ist package mypack
und main/mypack.go
ist (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 lib
Unterverzeichnis. 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 lib
Verzeichnis 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/mypack
ausführen , erhalten Sie einen schönen Importpfad, um den Code in anderen Projekten wiederzuverwenden. Wenn Sie verwenden, haben lib
interne Support-Dateien einen Importpfad, der darauf hinweist myproj.org/lib/mysupport
.
Verwenden Sie beim Erstellen des Projekts main/mypack
z go build main/mypack
. Wenn Sie mehr als eine ausführbare Datei haben, können Sie diese auch unter trennen, main
ohne separate Projekte erstellen zu müssen. zB main/myfoo/myfoo.go
und main/mybar/mybar.go
.