Artículos

  • Generales 0

    Testing avanzado en Go: table-driven tests, subtests, benchmarks y testify

    Aprende a estructurar tests de Go con table-driven tests y t.Run, paraleliza con t.Parallel, mide rendimiento con benchmarks y b.N, y simplifica aserciones con testify. Incluye t.Helper, t.Cleanup, testify/mock y testing/fstest con ejemplos reales.

  • Generales 0

    Fuzzing en Go 1.18+: go test -fuzz, corpus y encontrar bugs automáticamente

    El fuzzing nativo de Go, disponible desde la versión 1.18, genera miles de inputs mutados para encontrar crashes en parsers, deserializadores y validadores. Aprende la sintaxis de FuzzXxx, f.Add() y f.Fuzz() con cuatro ejemplos reales: fechas, CSV, monedas y JSON.

  • Generales 0

    Generics en Go 1.18: type parameters, constraints y funciones genéricas

    Go 1.18 introdujo los genéricos con type parameters entre corchetes. Aprende a usar constraints como any, comparable y constraints.Ordered, define tus propios constraints con interfaces de unión y escribe funciones Map, Filter y Reduce genéricas, además de structs tipados como una pila sin in...

  • Generales 0

    Generics avanzados en Go: paquetes slices, maps, cmp y patrones con constraints

    Aprende a usar los paquetes slices, maps y cmp incorporados en Go 1.21, define constraints propios con el operador ~ y uniones de tipos, combina métodos con type sets en una misma interfaz y evita el error clásico del type switch sobre parámetros de tipo.

  • Generales 0

    go:embed en Go: incluir ficheros estáticos en el binario y go generate

    Aprende a usar //go:embed en Go 1.16 para incluir ficheros, plantillas HTML y assets dentro del binario sin dependencias externas. Ejemplos reales de servidor web self-contained, templates embebidos y configuración. También cubre go:generate para automatizar la generación de código con string...

  • Generales 0

    Go modules avanzado: workspaces, replace, retract y módulos privados

    Más allá de go get y go.mod básico: workspaces con go work para múltiples módulos locales sin hacks de replace, cómo parchear dependencias de terceros, retirar versiones publicadas con retract y configurar módulos privados con GOPRIVATE y un proxy Athens.

  • Generales 0

    Build tags, cross-compilation y ldflags en Go: compilar para cualquier plataforma

    Go compila para cualquier plataforma desde tu propia máquina. Aprende a usar GOOS y GOARCH para cross-compilar, build tags para controlar qué código entra en cada build, -ldflags para inyectar la versión y CGO_ENABLED=0 para generar binarios estáticos sin dependencias C.

  • Generales 0

    Cobra y Viper en Go: construir CLIs con subcomandos y gestión de configuración

    Aprende a construir CLIs en Go con Cobra y Viper: subcomandos con AddCommand(), flags persistentes, configuración desde fichero YAML y variables de entorno con AutomaticEnv(). Incluye el antipatrón de MarkFlagRequired con Viper y cómo evitarlo usando RunE.

  • Generales 0

    Zap en Go: logging estructurado de alto rendimiento con campos tipados

    Aprende a usar go.uber.org/zap para logging estructurado de alto rendimiento en Go. Cubre zap.Logger y SugaredLogger, campos tipados, logger.With() para añadir contexto fijo, zapcore para salida múltiple y el antipatrón de fmt.Sprintf que destroza el rendimiento.

  • Generales 0

    Profiling en Go: pprof, benchmarks, escape analysis y optimización de memoria

    Aprende a usar pprof, benchmarks y escape analysis en Go para encontrar cuellos de botella, reducir allocations y aliviar la presión del GC. Ejemplos con sync.Pool, strings.Builder, runtime/pprof y análisis de qué escapa al heap.