Estoy trabajando en un nuevo proyecto con Go, y todos somos nuevos en Go. Estamos siguiendo la estructura estándar del directorio go, y tenemos todo el código bajo
$ GOPATH / src / github.com / companyname / projectname
que también es la raíz de un repositorio git
El diseño de ruta recomendado estándar parece un poco extraño, especialmente si estamos trabajando en un proyecto en varios idiomas, por ejemplo, un servidor basado en Go rest / http y un front-end html / javascript. En ese caso, probablemente querría que la estructura de mi proyecto se vea así:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
Pero, ¿es realmente necesario tener el código colocado dentro de GOPATH?
Como intento, creé un pequeño programa donde el código fuente estaba fuera de GOPATH. Podría dividir fácilmente el proyecto en paquetes, por lo que el main
paquete podría hacer referencia a un foo
paquete en una foo/
carpeta usando import "./foo"
.
Hasta donde puedo ver, hay dos cosas que esto no me permite:
- Otro código no puede importar este código. Esto no es un problema ya que estamos construyendo un servicio específicamente para la empresa.
- No puedo usar
go install
para instalarlo. Esto tampoco es un problema. La tubería de compilación instala la herramienta.
Sin embargo, permite que el servidor de compilación no tenga su espacio de trabajo ubicado dentro de GOPATH
¿Se desalienta este enfoque? Si es así, ¿por qué?
¿Hay otros efectos secundarios negativos que los dos que he enumerado?
Tenga en cuenta que este es un proyecto privado para una empresa, no un código público de código abierto.
Separar el proyecto real del GOPATH parece tentador, pero hay que tener cuidado al romper las reglas cuando estás en el escenario de Shu
Actualización 2019
Ya no necesita almacenar su proyecto debajo
GOPATH
.Póngalo en un directorio fuera de
GOPATH
. Luego escriba:go mod init github.com/youruser/yourproject
Estarás listo para ir.
fuente