0Pricing
Go Academy · Lección

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 driver

go 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.4

Usar 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 setup

Selecció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/gin

go 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/net

go 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,direct

go 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 cleanup

Comprobar 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.4

Comprobació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@version añade dependencias
  • Go utiliza MVS: la versión mínima que satisface todos los requisitos
  • go mod tidy limpia las dependencias que no se utilizan
  • go mod vendor permite realizar compilaciones sin conexión totalmente reproducibles
  • Use GOPRIVATE para los módulos privados
  • Ejecute govulncheck para 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

  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