Bienvenido a Platzi

Samuel Soto Hoyos

Samuel Soto Hoyos

student
hace 9 meses

Aquí están las buenas prácticas al usar módulos Go, basadas en la información proporcionada:

  • Comprender la organización del código con módulos:
    • Los programas Go se estructuran en paquetes, que son colecciones de archivos fuente en el mismo directorio que se compilan juntos.
    • Un módulo es un conjunto de paquetes Go relacionados que se liberan de forma conjunta. Un repositorio Go, por convención, contiene un único módulo en su directorio raíz.
    • El archivo
      go.mod
      en la raíz del módulo declara la ruta del módulo, la cual sirve como prefijo de la ruta de importación para todos los paquetes dentro de ese módulo.
    • La ruta del módulo también es utilizada por el comando
      go
      para saber dónde descargar el módulo desde un repositorio remoto, por ejemplo, para
      golang.org/x/tools
      .
    • Una ruta de importación para un paquete se forma uniendo la ruta del módulo con la ruta del subdirectorio del paquete dentro del módulo (ej.,
      github.com/google/go-cmp/cmp
      ). Los paquetes de la librería estándar no tienen un prefijo de ruta de módulo.
  • Inicialización y gestión de dependencias:
    • Para iniciar un proyecto con módulos, ejecute
      go mod init <ruta_del_módulo>
      . Esto creará un archivo
      go.mod
      que rastreará las versiones de las dependencias de su proyecto.
    • Para agregar, actualizar o degradar una dependencia, utilice el comando
      go get
      . Por ejemplo,
      go get golang.org/x/text@v0.3.5
      establecerá una versión específica de una dependencia.
    • Es una buena práctica usar
      go mod tidy
      para añadir automáticamente los requisitos de módulo faltantes para los paquetes importados y eliminar los requisitos de módulos que ya no se utilizan, manteniendo su archivo
      go.mod
      limpio y preciso.
    • Las dependencias del módulo se descargan en el subdirectorio
      pkg/mod
      dentro de su
      GOPATH
      . Puede eliminar todos los módulos descargados con
      go clean -modcache
      .
  • Compatibilidad y versionado semántico:
    • Los paquetes dentro de los módulos deben mantener la compatibilidad hacia atrás (backward compatibility) a medida que evolucionan, siguiendo la "regla de compatibilidad de importación". Esto significa que si un paquete antiguo y uno nuevo tienen la misma ruta de importación, el nuevo debe ser compatible con el antiguo.
    • Como parte de la compatibilidad de Go 1, se aconseja no eliminar nombres exportados y fomentar el uso de literales compuestos etiquetados. Si necesita una funcionalidad diferente que rompa la compatibilidad, la práctica es añadir un nuevo nombre en lugar de modificar uno antiguo.
    • Para rupturas de compatibilidad, se utiliza el versionado semántico y el versionado de importación semántico. Los módulos en su versión 2 o superior (ej.,
      v2
      ) deben incluir un sufijo de versión mayor en su ruta (ej.,
      /v2
      ). Esto asegura que paquetes en diferentes versiones mayores de un módulo tengan rutas de importación distintas, manteniendo la compatibilidad para los importadores.
  • Gestión de la cadena de herramientas Go:
    • A partir de Go 1.23, puede utilizar
      go get
      para gestionar la cadena de herramientas Go como si fuera cualquier otra dependencia. Esto permite que Go descargue automáticamente las versiones actualizadas de la cadena de herramientas cuando sea necesario.
    • Si su proyecto depende de un código que requiere una versión más reciente de Go (ej., Go 1.24), Go actualizará la directiva
      go
      en su archivo
      go.mod
      para reflejar este requisito y automáticamente buscará el entorno de ejecución de Go 1.24.
  • Recomendaciones generales para el desarrollo Go:
    • Aunque puede definir módulos localmente, es una buena práctica organizar su código como si fuera a publicarlo algún día en un repositorio remoto.
No hay respuestas
Curso de Go

Curso de Go

Programa aplicaciones backend con Go. Aprende variables, funciones, goroutines y manejar concurrency para procesos eficientes. Desarrolla con GoMod y aprovecha paquetes externos. Implementa prácticas recomendadas desde métodos hasta channels.

Curso de Go
Curso de Go

Curso de Go

Programa aplicaciones backend con Go. Aprende variables, funciones, goroutines y manejar concurrency para procesos eficientes. Desarrolla con GoMod y aprovecha paquetes externos. Implementa prácticas recomendadas desde métodos hasta channels.