Sé que fui yo quien hizo esta pregunta, busqué mucho para descubrir cómo estructurar mejor mis aplicaciones go. Solo quiero compartir lo que aprendí.
Tengo muchos blogs rojos, tres de ellos son los siguientes:
- Ve las mejores prácticas, seis años después – por Peter Bourgon
- Estructurando aplicaciones en Go – por Ben Johnson
- Diseño de paquete estándar – también por Ben Johnson
Le sugiero que lea estos artículos para obtener más información sobre la estructuración de las aplicaciones go.
- ¿Cuáles son las aplicaciones web más impresionantes creadas por los estudiantes mientras asisten a escuelas de codificación como Flatiron School, Fullstack Academy, DigitalCrafts, MakerSquare, Hack Reactor, Dev Bootcamp, etc.?
- ¿Qué es la seguridad de la aplicación web?
- ¿Es un mal movimiento no incluir algún tipo de registro de correo electrónico / creación de cuenta al crear una aplicación web y solo confiar en el registro / inicio de sesión social?
- Cómo comenzar a crear aplicaciones web
- Cómo aplicar la integración de directorio activo en una aplicación web
Creé una aplicación de muestra para demostrar cómo estructuré mis aplicaciones go.
La aplicación se llama my-app :
La carpeta pkg contiene los paquetes que usará para sus aplicaciones. Estos paquetes envuelven sus dependencias , por ejemplo, en su paquete de sesiones , puede usar paquetes externos para administrar sus sesiones, por ejemplo, puede usar gorilla / sessions. Aquí está el contenido de sessions.go ( my-app / pkg / sessions / sessions.go) :
Luego, en su paquete principal ( my-app / cmd / my-app / main.go ), solo necesitará importar sus propios paquetes. Esto te da más flexibilidad.
También eché un vistazo a Docker en GitHub, (archivo docker.go), lo más probable es que hagan la misma forma de estructuración.
Espero que esto sea útil 🙂
Editar : Ah, por cierto, Quora User contribuyó mucho en esta pregunta. Aprendí mucho sobre otras cosas como Docker , Kubernetes y microservicios que no sabía antes de que respondiera esta pregunta.
Editar : Sé que me he perdido mucho de mi respuesta. Soy relativamente nuevo en Go. Me alegraría si alguien señalara lo que me estoy perdiendo aquí 🙂