// 09 · siete apps reales, archivo por archivo
Qué se construye con Go
Los siete tipos de aplicación donde Go domina, cada uno como un mini-proyecto completo: navega el árbol, abre cada archivo y lee el código. Todos compilan tal cual.
01 · API REST
el caso de uso #1El pan de cada día: una API de tareas con la stdlib pura (Go 1.22+), store en memoria protegido con mutex, middleware de logging, graceful shutdown, test de integración con httptest y Dockerfile de producción. Es tu proyecto Spring Boot, completo, en ~180 líneas y sin una sola dependencia externa.
02 · Herramienta CLI
donde Go no tiene rivalDocker, kubectl, terraform, gh: todas las CLIs que usas están escritas en Go, porque un binario único sin runtime es la distribución perfecta. Esta es gostats: recorre un directorio y cuenta líneas de código por extensión. Flags nativos, recorrido de archivos con filepath.WalkDir y reporte formateado.
03 · Worker / procesador de colas
concurrencia aplicadaEl patrón productor-consumidor que en Java montarías con ExecutorService + BlockingQueue, aquí en su forma natural: un pool de workers reutilizable con canales, contexto con timeout y recolección de errores. Cambia el envío de correos simulado por llamadas a RabbitMQ/Kafka/SQS y tienes un consumer de producción.
04 · Web app con server-side rendering
html/template + embedNo todo necesita React: Go renderiza HTML en el servidor con templates seguros (escapan XSS por defecto) y //go:embed mete plantillas y CSS dentro del binario — la app entera, assets incluidos, es un solo archivo ejecutable. Combínalo con htmx y tienes interactividad sin bundle de JavaScript.
05 · Microservicio gRPC
servicio-a-servicioPara comunicación interna entre microservicios, gRPC + Protocol Buffers es el estándar en el mundo Go (y el que usan Kubernetes y compañía): contratos tipados, streaming bidireccional y ~10x menos overhead que JSON. Defines el contrato en .proto, protoc genera el código, y tú solo implementas la interfaz.
06 · Scraper / bot concurrente
Python te va a perdonarDonde en Python harías requests + BeautifulSoup secuencial, Go descarga N fuentes en paralelo con un semáforo de canales que limita la concurrencia. goquery te da selectores jQuery sobre el HTML. El mismo patrón sirve para health-checkers, agregadores de precios y bots de monitoreo.
07 · Chat en tiempo real (WebSockets)
nuevo · el patrón hubEl ejemplo canónico de "compartir comunicando": un hub central corre en una sola goroutine y gestiona todo el estado (clientes conectados, difusión de mensajes) a través de canales — cero mutex. Cada cliente son dos goroutines: una bombea mensajes del navegador al hub, otra del hub al navegador. Con este patrón, 10.000 usuarios conectados son normalidad, no hazaña.
¿Y qué NO conviene construir en Go?
- Frontends ricos — ahí sigue ganando tu React; Go los sirve y les da la API.
- Apps móviles — Flutter sigue siendo tu herramienta; Go puede ser el backend (y con
gomobilehay nichos, pero no es el camino feliz). - Data science / ML — el ecosistema de Python (pandas, pytorch) no tiene rival; Go entra en la fase de servir modelos, no de entrenarlos.
- Sistemas con GUI de escritorio — posible (Wails, Fyne) pero minoritario.
Go brilla en: APIs y microservicios, CLIs, infraestructura/DevOps, workers y pipelines de datos, proxies y gateways, tiempo real con WebSockets, y cualquier cosa con mucha concurrencia de red.