O Google lançou uma prévia da nova versão da linguagem de programação Go. A versão 1.18 adiciona funcionalidade para programação 'genérica' com os chamados tipos 'parametrizados'.
Em suas próprias palavras, é a mudança mais importante e maior na linguagem de programação desde o lançamento da versão 1 do Go. A ideia por trás dos genéricos é que agora ele permite a funcionalidade para representar funções e estruturas de dados modificando os tipos. Isso exclui a 'generalidade' permitida pela definição de um tipo de interface como forma de abstrair os dados reais que estão sendo trazidos para uma função.
O Google indica que os desenvolvedores de Go devem perceber que a funcionalidade, sem dúvida, levará a novos bugs. Eles devem, portanto, abordar esses 'genéricos' com cautela.
Outras funcionalidades no Go 1.18 Beta
Além da funcionalidade acima, a nova visualização também possui suporte integrado para escrever testes baseados em fuzzing. Esses testes podem encontrar automaticamente entradas que causam falhas nos programas ou retornam respostas inválidas. Go 1.18 Beta também oferece um novo 'Go workspace mode'. Isso permite que os programadores trabalhem com vários módulos Go simultaneamente. Isso é especialmente útil para grandes projetos, de acordo com o Google.
Além disso, a versão 1.18 Beta adiciona funcionalidade com um comando estendido go version -m. Este comando agora armazena detalhes como sinalizadores do compilador. Um programa agora pode consultar seus próprios detalhes de compilação com o comando debug.ReadBuildInfo.
Além disso, mais convenção de chamada baseada em registro, disponível desde o Go 1.17, foi adicionada na visualização. Onde na versão anterior essa funcionalidade era adequada apenas para acelerar o código Go em sistemas x86 e x64, agora também é adequada para sistemas baseados em ARM64 e PPC64. Isso deve fornecer até 20% mais velocidade.