A comunidade Golang está agitada com algumas mudanças recentes nas instruções de fluxo de controle mais básicas da linguagem de programação, o para laço.
Na versão mais recente, a linguagem de programação Go, v1.22, cada giro de um para loop agora itera variáveis com cada passagem. Em todas as versões anteriores do Go, variáveis declaradas definindo para loop não mudou.
Isso foi problemático. A mudança aborda um problema sutil, mas frequentemente encontrado, especialmente ao usar encerramentos em programas simultâneos.
“Esse tipo de bug de compartilhamento não intencional atinge todos os programadores Go, estejam eles apenas começando a aprender Go ou já o usando há uma década”, explicou The Go Wiki.
Agora, este intervalo no Go 1.22:
irá imprimir esses números…
…Em vez disso, onde Go 1.21 continuaria repetindo o valor inicial da variável:
Esta é uma “mudança fundamental na forma como as variáveis são definidas”, explicou um vídeo instrutivo do Dreams of Code no YouTube. “Isso altera a variável do loop para ter escopo por iteração, em vez de escopo para todo o loop.”
Isso facilitará as coisas para os casos que precisam de alterações de loop, como em testes paralelos ou para encerramentos em programação simultânea.
Na verdade, aqueles que aprendem Go são frequentemente ensinados a contornar essa peculiaridade, observou Dreams of Code. Freqüentemente, os codificadores esquecem a intervenção manual para corrigir esse problema e, então, é necessário um trabalho de limpeza por meio de um linter.
Um serviço que foi prejudicado por esse bug foi o serviço de certificado Let’s Encrypt, que em 2020 teve que invalidar 3 milhões de certificados como resultado da aplicação incorreta do Golang para laço. D’Oh!
Inteiros fáceis em Golang
Outra mudança no venerável para loop: agora pode-se variar sobre números inteiros. Essa mudança reduz o padrão, observou Carlana Johnson em um podcast Changelog Go Time sobre o lançamento.
Aqui está um pouco de açúcar sintático para usuários regulares desfrutarem como um deleite. Até o momento, eles têm definido o alcance de um para loop com o formato de três expressões bastante complicado do estilo C antigo:
Com Go 1.22, você pode digitar…
…e, assim como antes, o programa irá iterar 5 vezes, até atingir o valor 4 (0-1-2-3-4).
Uma pequena mudança, esta simplificação pode, no entanto, salvar as teclas digitadas, especialmente em casos como software de benchmarking, por exemplo, onde o mesmo conjunto de instruções é copiado repetidamente.
Go Time 302: O que há de novo no Go 1.22 – Ouça em Changelog.com
Go’s Baby entra na programação funcional
Em breve, Golang também poderá abranger funções. A nova versão da linguagem de programação prevê uma mudança nos iteradores de intervalo sobre função.
Você pode até ativar esse recurso na versão 1.22 adicionando-o ao seu build GOEXPERIMENT=rangefunc.
“Vamos! Vamos! Vamos! Isso é ótimo”, observador anônimo de tecnologia ThePrimeagen aplaudido em um comentário do Twitch.
Esse recurso é semelhante às funções geradoras em outras linguagens. Resumindo, pode transformar qualquer função em um iterador.
Desde a introdução dos genéricos no Go, os desenvolvedores criaram muitas bibliotecas. No entanto, Go não tinha um padrão para iterar esses genéricos.
A instrução range agora pode chamar uma função que produz um valor de iterador.
“É um pouco estranho de se ver. Isso confunde um pouco a sua mente”, admitiu Johnson. “Mas quando você escreve o código não é tão ruim.”
“Basicamente, você pode escrever uma pequena função que retorna uma função e agora você tem um iterador”, disse ela.
Isso é bom, por exemplo, iterar em uma árvore binária.
Go já está cerca de 95% funcional, disse ThePrimeagen entusiasmado: “Ele só precisa de melhor suporte ao iterador e está totalmente lá”.
Golang é atualizado a cada seis meses. O próximo lançamento está previsto para agosto.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
Joab Jackson é editor sênior do The New Stack, cobrindo computação nativa em nuvem e operações de sistema. Ele faz reportagens sobre infraestrutura e desenvolvimento de TI há mais de 25 anos, incluindo passagens pela IDG e pela Government Computer News. Antes disso, ele…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.