0Pricing
Go Academy · Lección

Módulos de Go con go mod

Inicialización de módulos, go.mod y go.sum

Módulos de Go con go mod es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

¿Qué es un módulo de Go?

Un módulo es una colección de paquetes de Go con un archivo go.mod en su raíz. Los módulos son la unidad de distribución y versionado del código en Go:

// go.mod — created with: go mod init github.com/myuser/myapp
module github.com/myuser/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    golang.org/x/sync v0.5.0
)

go mod init

Inicialice un módulo nuevo con go mod init:

# In project directory:
go mod init github.com/myuser/myapp

# This creates go.mod:
# module github.com/myuser/myapp
# go 1.21

# The module path is the canonical import path prefix
# for all packages in this module

go.sum — Verificación de integridad

go.sum registra las sumas de comprobación criptográficas de todas las dependencias. Nunca lo edite manualmente: los comandos de Go se encargan de mantenerlo:

# go.sum example entries:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=

# Commit go.sum to version control — it ensures reproducible builds

go get — Añadir dependencias

Use go get para añadir o actualizar dependencias. Actualiza tanto go.mod como go.sum:

# Add latest version
go get github.com/pkg/errors

# Add specific version
go get github.com/pkg/errors@v0.9.1

# Upgrade to latest patch release
go get -u=patch github.com/pkg/errors

# Remove unused dependency from go.mod
go mod tidy

go mod tidy

go mod tidy añade los requisitos que faltan y elimina los que no se utilizan de go.mod y go.sum. Ejecútelo después de editar las importaciones:

# After adding/removing imports:
go mod tidy

# What it does:
# 1. Adds any missing module requirements
# 2. Removes requirements for packages no longer imported
# 3. Updates go.sum with needed checksums
# 4. Best practice: run before committing

Versionado de módulos con Semver

Los módulos de Go utilizan versionado semántico. Las versiones principales >= 2 requieren un sufijo en la ruta:

// v1: github.com/pkg/errors
import "github.com/pkg/errors"

// v2+: module path includes major version
import "github.com/foo/bar/v2"
import "github.com/foo/bar/v3"

// go.mod:
// require github.com/foo/bar/v2 v2.3.1

go mod vendor

El modo vendor copia todas las dependencias en un directorio local vendor/ para realizar compilaciones sin conexión:

# Copy deps to vendor/
go mod vendor

# Build using vendor/
go build -mod=vendor ./...

# Useful for:
# - Air-gapped environments
# - Reproducible CI builds without network
# - Code review of dependencies

Directiva replace

La directiva replace de go.mod sustituye un módulo por una ruta local o por otra versión; resulta útil para el desarrollo local:

module github.com/myapp

go 1.21

require github.com/mylib v1.0.0

// Use local fork during development:
replace github.com/mylib => ../mylib

// Replace with a specific version:
// replace github.com/mylib v1.0.0 => github.com/myfork v1.0.0

go env GOPATH y GOMODCACHE

Variables de entorno clave para los módulos de Go:

# Module cache location (default: ~/go/pkg/mod)
go env GOMODCACHE

# Proxy for downloading modules (default: proxy.golang.org)
go env GOPROXY

# Sum database for checksum verification
go env GONOSUMCHECK

# Disable module proxy (use direct)
export GOPROXY=direct

go list y go mod graph

Inspeccione las dependencias de los módulos con estos comandos:

# List all modules in the build
go list -m all

# Show module dependency graph
go mod graph

# Find which module provides a package
go list -m -json all | grep -A5 gin

# Check for available updates
go list -m -u all

Comprobación rápida

¿Qué hace go mod tidy?

Resumen: módulos de Go

Conceptos clave sobre los módulos:

  • go mod init crea el módulo con un archivo go.mod
  • go.mod enumera el nombre del módulo, la versión de Go y las dependencias
  • go.sum contiene las sumas de comprobación; inclúyalo en el repositorio
  • go get añade o actualiza dependencias y go mod tidy las depura
  • Use replace para forks de desarrollo local
  • Las versiones principales v2 y posteriores requieren un sufijo en la ruta

Preguntas frecuentes

¿La lección «Módulos de Go con go mod» es gratis?

Sí — el texto completo de «Módulos de Go con go mod» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Módulos de Go con go mod»?

Inicialización de módulos, go.mod y go.sum Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Módulos de Go con go mod»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Packages: organización del código Go
  2. Módulos de Go con go mod
  3. Incorporación de dependencias externas
  4. Packages internos y workspaces
← Volver a Go Academy