Incorporación de dependencias externas
go get, control de versiones y caché de módulos
Incorporación de dependencias externas es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 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.
Encontrar paquetes
El recurso principal para encontrar paquetes de Go es pkg.go.dev. Busque paquetes, lea la documentación y consulte ejemplos de uso:
# Search and explore at https://pkg.go.dev
# Popular packages:
# github.com/gin-gonic/gin — HTTP framework
# github.com/stretchr/testify — test assertions
# golang.org/x/sync — extended sync primitives
# github.com/spf13/cobra — CLI framework
# github.com/jackc/pgx/v5 — PostgreSQL drivergo get: añadir una dependencia
Use go get para añadir una dependencia. Descarga el módulo y actualiza go.mod y go.sum:
# Add latest version
go get github.com/stretchr/testify
# Add specific version
go get github.com/stretchr/testify@v1.8.4
# Add a pre-release version
go get github.com/foo/bar@main
# go get updates go.mod:
# require github.com/stretchr/testify v1.8.4Usar la dependencia
Después de ejecutar go get, importe y use el paquete normalmente:
package main
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
)
func TestAdd(t *testing.T) {
assert.Equal(t, 4, 2+2, "math should work")
fmt.Println("assertion done")
_ = assert.New // suppress unused import
}go mod download
Descargue previamente todas las dependencias enumeradas en go.mod a la caché de módulos:
# Download all deps from go.mod
go mod download
# Download specific module
go mod download github.com/gin-gonic/gin@v1.9.1
# Useful for:
# - Docker layer caching (copy go.mod/go.sum first, then download)
# - Pre-warming CI cache
# - Offline development setupSelección de versiones semánticas: MVS
Go utiliza Minimum Version Selection (MVS): siempre elige la versión mínima requerida que satisface todas las dependencias. No realiza actualizaciones principales automáticamente:
# If A requires gin v1.9.0
# and B requires gin v1.9.1
# MVS selects v1.9.1 (minimum that satisfies both)
# To upgrade ALL dependencies to latest minor/patch:
go get -u ./...
# To upgrade specific package:
go get -u github.com/gin-gonic/gingo mod why — Explicar las dependencias
Descubra por qué se requiere un módulo en su compilación:
# Why is encoding/json needed?
go mod why encoding/json
# Why is golang.org/x/net needed?
go mod why golang.org/x/net
# Output shows the import chain:
# github.com/myapp
# github.com/gin-gonic/gin
# golang.org/x/netgo mod vendor para compilaciones reproducibles
La vendorización fija todas las dependencias en su repositorio para obtener compilaciones reproducibles:
# Vendor all deps
go mod vendor
# Build only from vendor (no network)
go build -mod=vendor ./...
# Dockerfile pattern:
# COPY go.mod go.sum ./
# RUN go mod download
# COPY . .
# RUN go build ...Módulos privados con GONOSUMCHECK y GOPRIVATE
Configure Go para trabajar con módulos privados alojados en servidores internos:
# Tell Go not to use proxy/sumdb for private modules
export GOPRIVATE=github.com/mycompany/*
export GONOSUMCHECK=github.com/mycompany/*
# Or in go env:
go env -w GOPRIVATE=github.com/mycompany/*
# For enterprise Go proxy:
export GOPROXY=https://proxy.mycompany.com,directgo clean -modcache
Vacíe la caché de módulos para forzar la descarga de nuevo de todas las dependencias:
# Clear entire module cache
go clean -modcache
# Clear cache for specific version
go clean -modcache github.com/gin-gonic/gin@v1.9.1
# Useful when:
# - Cache is corrupted
# - Testing with a fresh environment
# - Disk space cleanupComprobar vulnerabilidades: govulncheck
El analizador oficial de vulnerabilidades de Go comprueba si sus dependencias presentan CVE conocidas:
# Install govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest
# Scan your module
govulncheck ./...
# Output example:
# Vulnerability #1: GO-2023-1234
# github.com/foo/bar v1.2.3
# Fixed in: v1.2.4
# Suggestion: go get github.com/foo/bar@v1.2.4Comprobación rápida
¿Qué comando añade una versión específica de una dependencia al módulo?
Resumen: dependencias externas
Resumen:
go get pkg@versionañade dependencias- Go utiliza MVS: la versión mínima que satisface todos los requisitos
go mod tidylimpia las dependencias que no se utilizango mod vendorpermite realizar compilaciones sin conexión totalmente reproducibles- Use
GOPRIVATEpara los módulos privados - Ejecute
govulncheckpara encontrar vulnerabilidades
Preguntas frecuentes
¿La lección «Incorporación de dependencias externas» es gratis?
Sí — el texto completo de «Incorporación de dependencias externas» 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 «Incorporación de dependencias externas»?
go get, control de versiones y caché de módulos 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 3 de 4.
¿Cuánto tiempo toma la lección «Incorporación de dependencias externas»?
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
- Packages: organización del código Go
- Módulos de Go con go mod
- Incorporación de dependencias externas
- Packages internos y workspaces