Reutilizar código es una de las prácticas más valiosas en cualquier lenguaje de programación, y Go ofrece un mecanismo claro y potente para lograrlo: los módulos. Cuando necesitas que un proyecto como un servidor web o una calculadora pueda ser importado y usado en otros proyectos, la solución es empaquetarlo como un módulo, subirlo a GitHub y versionarlo con tags.
¿Cómo preparar tu código para convertirlo en un módulo de Go?
El primer paso consiste en tomar el código que deseas compartir y eliminar la función main. Esta función es el punto de entrada de cualquier programa ejecutable en Go, pero un módulo no necesita ejecutarse por sí solo: su propósito es ser importado por otros proyectos.
En el ejemplo trabajado se parte de una calculadora previamente construida [0:47]. Se copia su contenido en una carpeta nueva y limpia, y se realizan dos cambios fundamentales:
- Eliminar
main: el módulo no tendrá punto de ejecución propio.
- Cambiar el nombre del paquete: en lugar de
package main, se usa un nombre descriptivo como package mycalculator [1:22].
Con estos ajustes, el código queda listo para ser exportado. Todas las funciones que comiencen con mayúscula serán accesibles desde otros proyectos, siguiendo la convención de exportación de funciones en Go.
¿Qué papel juega go mod init al crear un módulo?
Una vez preparado el código, es necesario inicializar el módulo con el comando go mod init [2:22]. La sintaxis requiere un nombre que siga una convención específica:
bash
go mod init github.com/tu-usuario/mycalculator
Este nombre es crucial porque establece la ruta de importación que otros proyectos usarán para consumir tu módulo. Debe coincidir exactamente con la URL del repositorio en GitHub.
Al ejecutar este comando se genera el archivo go.mod [2:50], que define la identidad del módulo y lista sus dependencias. Si tu proyecto utiliza únicamente las librerías estándar de Go, no necesitarás especificar dependencias adicionales en este archivo.
¿Por qué la ruta del módulo debe coincidir con el repositorio?
Go utiliza la ruta del módulo para resolver e instalar paquetes desde internet. Cuando otro proyecto ejecute go get github.com/tu-usuario/mycalculator, Go buscará exactamente esa URL. Por eso el repositorio en GitHub debe ser público y su nombre debe coincidir con el que usaste en go mod init.
¿Cómo publicar tu módulo en GitHub con versionamiento?
Con el módulo inicializado, el siguiente paso es subirlo a GitHub. Se utiliza una secuencia estándar de comandos Git [3:10]:
git init: inicializa un repositorio local.
git remote add origin <URL>: conecta tu carpeta local con el repositorio remoto en GitHub.
git add .: agrega todos los archivos al staging area.
git commit -m "Initial commit": crea una instantánea del estado actual del código.
git push origin master: sube los cambios al repositorio remoto.
¿Por qué es importante crear tags en GitHub para módulos de Go?
El versionamiento semántico es esencial cuando trabajas con módulos [4:20]. Imagina que tres proyectos diferentes dependen de tu calculadora, pero cada uno necesita una versión distinta. Sin tags, no habría forma de distinguir entre versiones.
Para crear un tag se usa:
bash
git tag v1.0.0
git push --tags
Esto genera una etiqueta de versión visible en GitHub, dentro de la pestaña de tags del repositorio [4:55]. Go lee estas etiquetas para saber qué versión específica debe descargar cuando otro proyecto importa tu módulo.
El formato v1.0.0 sigue el estándar de semantic versioning: el primer número indica cambios mayores, el segundo cambios menores y el tercero correcciones. Respetar esta convención permite que los consumidores de tu módulo gestionen actualizaciones de forma predecible.
Con el módulo publicado y versionado, cualquier proyecto en Go podrá importarlo directamente desde GitHub y utilizar todas las funciones exportadas. El siguiente paso natural será crear un nuevo proyecto que consuma este módulo y lo ejecute. ¿Ya tienes algún proyecto propio que te gustaría convertir en módulo reutilizable?