Los módulos permiten controlar el uso de versiones de los paquetes en Go.
Esta documentación sirve para la versión ≥ 1.13.
Cuando creamos archivos .go
fuera del $GOPATH y este archivo no necesita de paquetes externos, Go crea una ruta false de $GOPATH para ejecutarlo.
Usa SemVer (versión semántica) para el control de versiones. https://semver.org/lang/es/
Revisa la integridad de los paquetes por medio de los checksum.
El archivo go.mod tiene la siguiente estructura:
module repo-server/user/package
go 1.XX
require (
repo-server/user/package Vx.y.z
repo-server/user/package Vx.y.z // indirect
)
replace repo-server/user/package => ../path/in/your/pc/package
exclude repo-server/user/package Vx.y.z
Ejemplo:
module github.com/alexyslozada/sql-utils
go 1.13
require (
github.com/satori/uuid V1.0.1
github.com/labstack/echo V3.3.1 // indirect
)
replace github.com/satori/uuid => ../pruebas/uuid
exclude github.com/labstack/echo V3.3.0
El versionamiento se usa así:
Vx.y.z-prerelease.x.y.z
Siempre inicia con la letra v
en minúscula, luego la versión major
, minor
y patch
.
x major
identifica una versión estable, que tiene compatibilidad sólo con las versiones minor y patch de dicha versión. Es decir, la versión 1.11.3 es compatible con la versión 1.7.0, pero no con la versión 2.0.0
y minor
identifica una versión que tiene nuevas características dentro de la versión estable.
z patch
son fix o mejoras de rendimiento en una versión estable.
prerelease.x.y.z
go mod lo usa como la fecha de una versión que no tiene el tag de la versión.
Ejemplo de prerelease normal: v1.0.3-rc0, v1.0.3-rc1, etc