Go 1.22 foi lançado: o que há de novo na linguagem de programação Golang
A equipe de desenvolvimento do Go (Golang) lançou oficialmente a versão 1.22. Esta atualização representa um passo significativo na evolução da linguagem, corrigindo inconvenientes antigos e adicionando melhorias muito aguardadas. Analisamos as principais mudanças que afetarão todos os desenvolvedores Go.
Principal mudança: loop for-range corrigido
A novidade mais esperada é a mudança no comportamento da variável de loop na construção for-range. Anteriormente, a variável era criada uma vez e reutilizada a cada iteração, o que causava erros frequentes ao capturar variáveis em closures (por exemplo, em goroutines).
A partir do Go 1.22, cada iteração do loop for-range cria uma nova variável. Isso elimina automaticamente uma classe de bugs relacionados à captura do endereço da variável de loop. O código antigo, escrito considerando o comportamento anterior (por exemplo, com cópia explícita), continuará funcionando, mas o compilador agora alertará sobre problemas potenciais.
Novo pacote math/rand/v2
Os desenvolvedores revisaram o pacote para geração de números aleatórios. No Go 1.22, foi apresentado o math/rand/v2, que oferece:
- Algoritmos mais rápidos. A nova implementação usa ChaCha8, aumentando significativamente a velocidade de geração.
- Segurança aprimorada. A segurança de thread agora está habilitada por padrão, simplificando a escrita de código correto.
- API limpa. Funções antigas que geravam erros foram removidas. A nova interface se tornou mais lógica.
O pacote math/rand/v2 é recomendado para todos os novos projetos, embora o antigo math/rand permaneça disponível para compatibilidade reversa.
Melhorias no roteamento e servidor HTTP
A biblioteca padrão net/http ganhou a capacidade de usar padrões em rotas. Agora é possível escrever regras mais complexas sem recorrer a frameworks de terceiros:
- Suporte a métodos HTTP. Por exemplo,
GET /items/{id}processará apenas requisições GET. - Validação de caminhos. Agora é possível definir caminhos exatos e processar o fragmento restante da URL (através de
{$}).
Isso simplifica a criação de APIs REST, tornando a biblioteca padrão ainda mais competitiva.
Desempenho e ferramentas
O lançamento também inclui várias melhorias de desempenho no compilador e runtime. A otimização do garbage collector e do escalonador de goroutines permitiu reduzir latências em aplicações de alta carga.
A ferramenta go vet ganhou novas verificações. Elas ajudam a encontrar problemas potenciais com loops e uso incorreto de tags em structs.
Conclusão
Go 1.22 é um lançamento maduro e bem pensado. A correção do loop for-range poupará desenvolvedores de milhares de horas de depuração, enquanto o novo pacote de números aleatórios e o roteamento aprimorado tornam a linguagem ainda mais adequada para desenvolvimento web e programação de sistemas. Se você usa Go em produção, a atualização definitivamente merece sua atenção.
A lista completa de mudanças está disponível nas notas de lançamento oficiais no site golang.org.