Anatomia de Slices, Arrays e Maps em Go: Estruturas Internas e Armadilhas
Por dentro de arrays, slices e maps em Go: o slice header (ptr, len e cap), como o append realoca memória e por que maps não são thread-safe.
60 posts
Por dentro de arrays, slices e maps em Go: o slice header (ptr, len e cap), como o append realoca memória e por que maps não são thread-safe.
Como emitir e validar JWT com assinatura, aplicar RBAC nas rotas e tratar expiração e revogação em uma API Go stateless.
Como escrever benchmarks confiáveis com testing.B, ler métricas de alocação e evitar que o compilador elimine o código medido.
Como separar regras de negócio de detalhes externos em Go com camadas, inversão de controle e o pragmatismo necessário para não exagerar.
Como configurar o http.Client com timeouts, reaproveitar conexões com http.Transport e drenar respostas para não vazar recursos.
Os laços for e range modernos (escopo por iteração do Go 1.22+), a inicialização curta em if e switch e os type switches.
Como versionar o esquema do banco com Goose, embutir migrações no binário e aplicar mudanças sem downtime com o padrão expand e contract.
Como o pool de conexões do database/sql funciona por dentro, quais os quatro parâmetros de capacidade e como controlar transações.
Como gerar a documentação OpenAPI de uma API Go a partir de anotações no código com Swag, evitando documentação desatualizada.
O que é fuzzing guiado por cobertura, como escrever funções FuzzXxx e como o Go transforma uma falha em um caso de teste reproduzível.
Como unir arquivos YAML, variáveis de ambiente e flags em uma configuração única, seguindo o princípio de configurar pelo ambiente.
Como modelar, fazer CRUD e associações com o GORM, quando vale usar um ORM em Go e como evitar armadilhas como N+1 e queries lentas.