Artículos
-
Generales
Arrays y slices en Go: la diferencia crucial y cómo funciona append
Aprende la diferencia entre arrays y slices en Go: por qué [3]int y [4]int son tipos distintos, cómo funciona append cuando se supera la capacidad, cuándo copy() es necesario y por qué pasar un slice a una función puede modificar el original.
-
Generales
Maps en Go: creación, lectura segura con el patrón ok y delete
Aprende a usar maps en Go: cómo crearlos con make o literales, leer claves sin errores usando el patrón ok, añadir y eliminar con delete, iterar con range y evitar problemas con nil maps y goroutines concurrentes.
-
Generales
range en Go: iterar slices, maps, strings y canales de forma idiomática
El operador range en Go permite recorrer slices, maps, strings y canales de forma idiomática. Aprende a usarlo bien, evita el error más común con structs y descubre cómo recorre runas Unicode en vez de bytes al trabajar con cadenas de texto.
-
Generales
Paquetes en Go: imports, visibilidad y cómo organizar el código
Cómo funciona el sistema de paquetes de Go: exportar con mayúscula, import paths con módulos, alias, blank imports, init(), y cómo estructurar un proyecto con cmd/, internal/ y pkg/. Incluye errores reales del compilador y por qué Go no permite ciclos de importación.
-
Generales
Go Modules: go.mod, go.sum y gestión de dependencias en 2026
Aprende a gestionar dependencias en Go con el sistema de módulos: go.mod, go.sum, go get y go mod tidy. Versiones principales, directiva replace, workspaces con go.work y configuración de repositorios privados con GOPRIVATE.
-
Generales
Goroutines en Go: lanzar tareas concurrentes con go y cómo funcionan
Las goroutines son funciones que Go ejecuta de forma concurrente con la palabra clave go. Aprende cómo funciona el scheduling M:N, por qué puedes lanzar miles sin problema, qué son las race conditions y cómo detectarlas con go run -race.
-
Generales
Canales en Go: enviar, recibir, close y canales direccionales
Aprende a usar canales en Go (chan): crear con make, enviar y recibir valores, buffered channels, cerrar con close(), recorrer con range, canales unidireccionales y el patrón pipeline con ejemplos reales.
-
Generales
select en Go: esperar en múltiples canales y el caso por defecto
El select en Go bloquea hasta que uno de sus canales está listo y ejecuta ese case. Aprende a usar el case default para no bloquear, timeout con time.After, fan-in para combinar canales, done channel para cancelar goroutines y cómo manejar la prioridad entre cases.
-
Generales
sync.WaitGroup en Go: esperar a que terminen todas las goroutines
sync.WaitGroup es la forma estándar de esperar a que un grupo de goroutines termine en Go: Add para fijar el contador, Done en cada goroutine y Wait para bloquear hasta cero. Incluye el error del Add dentro de la goroutine, fan-out, comparativa con canales y errgroup con manejo de errores.
-
Generales
sync.Mutex y RWMutex en Go: proteger datos compartidos entre goroutines
Aprende a proteger datos compartidos entre goroutines con sync.Mutex y RWMutex en Go. Cubre Lock y Unlock, defer para evitar deadlocks, lectores simultáneos con RWMutex, sync.Once para inicialización thread-safe y operaciones atómicas con sync/atomic.









