Estudando Go em 2026
Depois de um tempo afastado de Go (#golang), estou me atualizando na linguagem. Desde que li o fenomenal GOPL1, a linguagem ganhou dois recursos que faziam muita falta: genéricos e iteradores.
Em particular, os genéricos têm o potencial alterar profundamente o estilo de código idiomático em Go, inclusive na própria biblioteca padrão.
O GOPL infelizmente ainda não teve uma 2ª edição. Então, é hora de rever a literatura. Pesquisando livros mais recentes, escolhi estes para estudar…
- Learning Go, Second Edition, de Jon Bodner (O’Reilly, 2024)
- 100 Go Mistakes and How to Avoid Them, de Teiva Harsanyi (Manning, 2022)
O primeiro é elogiado por apresentar a linguagem com ênfase em um estilo idiomático. Eu não me importo muito de ler explicações sobre temas que já conheço, porque tenho interesse nas explicações em si, como autor e professor. Mas com certeza lerei muitas explicações sobre novidades. Já senti isso desde o primeiro capítulo de Learning Go.
O segundo me interessa pela ênfase em equívocos. Go é uma linguagem simples, mas muito expressiva: podemos fazer muito com pouco código. O “fazer muito” inclui errar e cair em armadilhas, que não são poucas. Por exemplo, o comportamento de slices2 é cheio de pegadinhas. Isto é um problema porque trata-se da estrutura de dados mais essencial no dia-a-dia. Outro exemplo: é muito fácil iniciar uma gorrotina,3 mas é uma simplicidade ilusória. A dificuldade está em gerenciar gorrotinas, sincronizá-las, recolher seus resultados, tratar seus erros, e assegurar que todas terminam corretamente.
Como um experimento, vou postar meu progresso na leitura destes livros aqui no blog.
Colocarei links aqui:
Enquanto isso, vamos falar sobre Go nas redes sociais! Mande dicas de livros e outros conteúdos atualizados sobre Go.
Será um prazer trocar ideia com você!
Endereços no rodapé.
The Go Programming Language, de Alan A. A. Donovan & Brian W. Kernighan (Addison-Wesley, 2015). Capítulos de amostra grátis em https://www.gopl.io/. ↩︎
Uma slice é uma sequência de itens que pode crescer dinamicamente, ao contrário de um array, que tem tamanho fixo em Go. ↩︎
Uma gorrotina é uma unidade de execução concorrente, mais leve que uma thread e mais versátil que uma corrotina em Python. As gorrotinas permitem paralelizar operações intensivas em CPU, enquanto as corrotinas de Python só servem para realizar operações concorrentes de E/S. ↩︎