Lançado Go 1.22: visão geral das principais mudanças do novo lançamento

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Lançado Go 1.22: o que mudou na linguagem



A equipe de desenvolvedores Go apresentou o tão aguardado lançamento da versão 1.22. Esta atualização traz uma série de mudanças significativas, visando melhorar o desempenho, a segurança e a facilidade de desenvolvimento. Vamos analisar as novidades mais importantes.



Principais novidades da versão 1.22



1. Loops for-range melhorados

Uma das mudanças mais esperadas é a reformulação do comportamento das variáveis em loops for-range. Anteriormente, a variável declarada no cabeçalho do loop era criada uma vez e reutilizada em cada iteração. Isso gerava bugs difíceis de detectar, especialmente ao capturar a variável em closures (por exemplo, ao passar para goroutines).

A partir do Go 1.22, cada iteração do loop for-range cria sua própria nova variável. Isso torna o código mais previsível e seguro.

  • Comportamento antigo: uma variável para todo o loop, erros frequentes com ponteiros e goroutines.
  • Novo comportamento: cada iteração recebe sua própria cópia da variável, eliminando bugs comuns.

Essa mudança afeta tanto loops sobre slices, maps e channels, quanto os tradicionais loops for de três componentes.



2. Suporte a integer range no for-range

Go 1.22 introduz a possibilidade de iterar diretamente sobre um intervalo inteiro. Agora é possível escrever simplesmente for i := range 10 em vez de construções complexas com for i:=0; i < 10; i++.

Essa simplificação sintática torna o código mais limpo e reduz a probabilidade de erros "off-by-one".

// Era:for i := 0; i < 5; i++ { ... }

// Agora:for i := range 5 { ... }


3. Nova implementação do pacote math/rand/v2

O pacote math/rand recebeu uma segunda versão — math/rand/v2. Não se trata apenas de uma atualização, mas de uma reformulação completa com foco em velocidade e qualidade da geração de números aleatórios.

  • Desempenho: A geração de números tornou-se significativamente mais rápida (em alguns benchmarks, de 2 a 3 vezes).
  • Algoritmos: São usados algoritmos modernos e mais confiáveis (por exemplo, ChaCha8 para o gerador padrão).
  • Facilidade: A nova API simplifica o trabalho com geradores, removendo várias funções obsoletas.

O pacote antigo math/rand ainda está disponível para compatibilidade reversa, mas para novos projetos, recomenda-se o uso de math/rand/v2.



Outras melhorias importantes

  • Roteamento melhorado no net/http: O pacote net/http agora suporta uma nova forma de registrar handlers usando padrões, aproximando-se do estilo de frameworks padrão. Os desenvolvedores podem definir rotas mais flexíveis, incluindo substituições e métodos HTTP.
  • Otimização da coleta de lixo: O garbage collector tornou-se mais eficiente, resultando em menor latência e redução do pico de consumo de memória em alguns cenários.
  • Atualização da biblioteca padrão: Foram feitas pequenas, mas úteis, alterações no trabalho com slices, maps e strings, melhorando o desempenho e a estabilidade.
  • Melhorias nas ferramentas

Recommended Libraries