100 erros em Go e como evitá-los
100 erros em Go e como evitá-los
Resumo:
Introdução
O livro «100 Go Mistakes and How to Avoid Them» (Teiva Harsanyi, 2022) não é apenas uma coleção de erros típicos, mas sim um guia prático completo para escrever código Go de qualidade, eficiente e sustentável. O autor, um engenheiro e consultor experiente, reuniu 100 problemas reais enfrentados por desenvolvedores e ofereceu soluções claras e bem fundamentadas. O livro foi lançado em 2022 e rapidamente se tornou um best-seller na categoria «Golang». Em 483 páginas, ele cobre todos os aspectos-chave da linguagem: desde construções básicas até tópicos avançados, como concorrência, gerenciamento de memória e testes.
Sobre o que é o livro
O livro é estruturado em seções temáticas, cada uma dedicada a uma área específica do desenvolvimento em Go. Dentro de cada seção, há de 5 a 15 erros específicos com análise detalhada. Cada capítulo segue um modelo único: descrição do problema, exemplo de código, explicação de por que é um erro e, finalmente, a abordagem correta. Esse formato permite usar o livro tanto como um tutorial quanto como um guia de referência. Os principais tópicos são:
- Construções básicas — variáveis, tipos de dados, estruturas de controle, funções.
- Strings e coleções — trabalho com strings, slices, maps, armadilhas comuns.
- Interfaces e genéricos — design correto de interfaces, erros típicos com interfaces vazias.
- Concorrência — goroutines, canais, mutexes, atômicos, padrões de sincronização.
- Gerenciamento de memória — pilha, heap, escape analysis, garbage collection, vazamentos.
- Tratamento de erros — panic, recover, erros como valores, wrapping.
- Testes e benchmarks — escrita de testes, mocks, profiling.
- Biblioteca padrão — JSON, HTTP, manipulação de arquivos.
Para quem é este livro
O livro é voltado para um público amplo de desenvolvedores Go — desde iniciantes que já dominam a sintaxe até engenheiros experientes que desejam aprofundar sua compreensão dos mecanismos internos da linguagem. Será especialmente útil para quem está migrando para Go a partir de outras linguagens (Java, Python, C++), pois muitos erros estão relacionados à transferência incorreta de hábitos. O livro também será um excelente recurso para líderes técnicos e revisores de código que desejam aprender a identificar pontos problemáticos no código alheio.
O que o leitor aprenderá
- Por que não se deve usar
rangepara copiar slices e como copiar corretamente. - Como evitar condições de corrida ao trabalhar com goroutines e canais.
- Qual a diferença entre
sync.Mutexesync.RWMutexe quando usar cada um. - Como tratar erros corretamente para não perder o contexto.
- Por que
deferpode causar vazamento de memória e como evitar isso. - Como escrever benchmarks eficientes e interpretar seus resultados.
- Erros típicos ao trabalhar com JSON (por exemplo, ignorar
json.RawMessage). - Como usar genéricos (Go 1.18+) sem complexidade desnecessária.
- Por que não se deve confiar na ordem dos elementos em um map.
- Como evitar panics em código de produção.
Pontos fortes do livro
O primeiro e principal é o foco prático. Cada erro é acompanhado de código real que pode ser executado imediatamente para visualizar o problema. O segundo é a profundidade da explicação: o autor não apenas diz «não faça isso», mas explica por que isso acontece no nível do compilador, runtime ou biblioteca padrão. O terceiro é a estruturação: o livro é dividido em capítulos pequenos, permitindo a leitura a partir de qualquer ponto. O quarto é a atualidade: são consideradas mudanças até o Go 1.19, incluindo genéricos. O quinto é a qualidade da tradução (no caso da edição em russo) — terminologia precisa, exemplos adaptados. Por fim, o livro contém inúmeras referências à documentação oficial.