Graceful shutdown para servidor HTTP Go
Encerre servidor HTTP Go com segurança usando signal.NotifyContext e http.Server.Shutdown, tratando timeout, WebSocket, recursos secundários e Kubernetes.
Encerre servidor HTTP Go com segurança usando signal.NotifyContext e http.Server.Shutdown, tratando timeout, WebSocket, recursos secundários e Kubernetes.
Guia de uso de encoding/json em Go, desde Marshal/Unmarshal, struct tag, Encoder/Decoder até tipos personalizados, com testes e erros comuns.
Como construir um worker pool em Go com channel, sync.WaitGroup, context e errgroup para processamento paralelo limitado, cancelável e testável.
Go não possui herança. Este artigo explica struct embedding, como methods são "promovidos", armadilhas de sobrescrita de method e como combinar embedding com interface.
Entenda o mecanismo de defer, panic e recover no Go, as armadilhas comuns, e quando retornar error em vez de panic.
Guia para usar pprof e coletar e ler profiles de CPU, heap, goroutine, block, mutex em aplicações Go, desde serviços HTTP até benchmarks
Entenda como maps funcionam em Go, por que o programa trava com "concurrent map writes" e como consertar usando sync.Mutex, sync.RWMutex, sync.Map.
Entenda como slices compartilham um array subjacente, o papel de len e cap, e como evitar erros de sobrescrita de dados ao usar append.
Guia prático do Go modules para inicializar projetos, adicionar e atualizar dependências, lidar com major versions, replace, go.work e módulos privados.
Aprenda a escrever table-driven tests em Go com slice de structs, t.Run, verificação de erros, execução paralela e comparação de structs com go-cmp, além dos erros mais comuns.
Use sync.WaitGroup para esperar goroutines, sync.Mutex para evitar data race e errgroup para agregar erros, cancelar via context e limitar goroutines.
Aprenda como usar type parameter, constraints, a notação ~ e tipos genéricos em Go através dos exemplos Order, Customer, Stack e Cache.
Use ServeMux do Go 1.22 para combinar métodos, ler parâmetros de caminho e retornar JSON. Uma REST API completa sem dependências externas.
Interfaces em Go são satisfeitas implicitamente. Este artigo mostra como mantê-las pequenas, declará-las no lado do consumidor, testar com fakes e evitar o erro de nil interface.
Como fazer wrap de erros com %w, verificar erros através da cadeia de wrap com errors.Is, extrair erros personalizados com errors.As, combinar erros com errors.Join e os erros mais comuns.
Aprenda como usar context.Context no Go para controlar timeout, deadline, cancelar goroutines e passar valores request-scoped de forma segura.
Goroutine leak não causa crash imediato, mas consome RAM silenciosamente ao longo do tempo. Este artigo aponta as causas comuns, como detectar e corrigir definitivamente.
Entenda como Go lida com concorrência através de goroutines e channels, desde o básico até padrões práticos como WaitGroup, select e context.