He estudiado varios proyectos de Go y hay bastante variación. Puede saber quién viene de C y quién viene de Java, ya que el primero voltea casi todo en el directorio raíz de proyectos en un main
paquete, y el segundo tiende a colocar todo en un src
directorio. Sin embargo, ninguno es óptimo. Cada uno tiene consecuencias porque afectan las rutas de importación y cómo otros pueden reutilizarlas.
Para obtener los mejores resultados, elaboré el siguiente enfoque.
myproj/
main/
mypack.go
mypack.go
Dónde mypack.go
está package mypack
y main/mypack.go
está (obviamente) package main
.
Si necesita archivos de soporte adicionales, tiene dos opciones. Manténgalos todos en el directorio raíz o coloque archivos de soporte privados en un lib
subdirectorio. P.ej
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
O
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Solo coloque los archivos en un lib
directorio si no están destinados a ser importados por otro proyecto. En otras palabras, si son archivos de soporte privados . Esa es la idea detrás de tener lib
--para separar las interfaces públicas de las privadas.
Hacer las cosas de esta manera le dará una buena ruta de importación, myproj.org/mypack
para reutilizar el código en otros proyectos. Si lo usa lib
, los archivos de soporte interno tendrán una ruta de importación que es indicativa de eso myproj.org/lib/mysupport
,.
Al construir el proyecto, use main/mypack
, por ejemplo go build main/mypack
. Si tiene más de un ejecutable, también puede separarlos main
sin tener que crear proyectos separados. por ejemplo main/myfoo/myfoo.go
y main/mybar/mybar.go
.