A Semana Go - Edição Nº 190
Nesta edição, conteúdo para quem quer escrever Go mais defensivo e performático: dos generic methods que chegam com o Go 1.27 até a desmistificação de nil checks excessivos e de um clássico leak de goroutine via range em canal. Veja também benchmarks de cache concorrente, uma otimização que dobrou a velocidade de uma suíte de testes e uma biblioteca de erros pensada para sistemas distribuídos.
Links
Generic Methods: A nova forma de escrever código genérico no Go 1.27
O Go 1.27 finalmente permite declarar parâmetros de tipo diretamente em métodos, sem precisar tornar toda a struct genérica. Comentei sobre esse recurso em uma das edições anteriores, pois algumas partes da comunidade acham que essa feature começa a tornar Go mais complexo do que o necessário.
Shard your locks: benchmarking 6 Go cache designs
O autor construiu o mesmo cache em memória de 6 formas diferentes, usando apenas a biblioteca padrão, e os comparou entre si. Leitura obrigatória para quem precisa decidir entre sync.Mutex, sync.RWMutex, sync.Map ou sharding em cenários de alta concorrência.
Excessive nil pointer checks in Go
Nem todo nil check é programação defensiva — muitas vezes ele é sinal de que o código perdeu o rastro de onde aquele ponteiro deveria ter sido validado, escondendo uma falha que devia ter sido tratada na inicialização. O post argumenta que falhar alto e rápido é sempre melhor do que mascarar o problema com um ‘if’ silencioso.
Don’t run SQL migrations in tests: How I sped up the test suite by 2x
Em vez de rodar todas as migrations SQL em cada teste, o autor passou a clonar um banco “golden” já migrado, identificado pelo hash do conteúdo das migrations — o que resultou em uma suíte de testes duas vezes mais rápida. Uma técnica simples e elegante para quem sofre com testes lentos que dependem de banco de dados.
cockroachdb/errors
Biblioteca de erros para Go pensada como substituta direta do pacote padrão, com suporte nativo a portabilidade de erros pela rede em sistemas distribuídos. Vale conhecer para quem constrói sistemas distribuídos e precisa propagar erros entre serviços sem perder contexto.
Channel iteration and goroutine leak
Um for-range sobre um canal que nunca é fechado vaza o receptor para sempre. O autor mostra como esse vazamento clássico passou despercebido pelos testes e só foi capturado pelo novo leak profile do Go 1.27.
Terça-feira (30/06) é o último dia para você garantir seu ingresso para a GopherCon Latam no 3º lote!
A conferência vai rolar nos dias 2, 3 e 4 de setembro, em Florianópolis, com +31 palestrantes internacionais, 6 keynotes e quem já foi nos outros anos sabe: você sai de lá com muito conhecimento e com o networking feito.
Além da conferência, temos 4 workshops disponíveis para você elevar seu nível em Go.


