A linguagem de programação Go evoluiu muito desde que foi publicada pela primeira vez em 2009. Go 1.18 foi um lançamento altamente esperado devido ao suporte para genéricos e muitas outras atualizações importantes.
Go lançou a versão 1.18 em março de 2022. Aqui está o resumo das mudanças mais significativas.
Suporte para genéricos
A programação genérica permite escrever funções que podem aceitar e retornar tipos mais flexíveis.
Antes do suporte para genéricos, você precisava declarar explicitamente os tipos de parâmetro e os tipos de retorno. A forma mais simples de genéricos permite especificar parâmetros não tipados:
funçãoImprimir Qualquer Coisa[T qualquer](coisaT) {
fmt.Imprimir(coisa)
}
Mas os genéricos oferecem muito mais poder do que apenas isso. Você pode declarar quase qualquer combinação e granularidade de tipo para parâmetros. Por exemplo, você pode usar o restrições pacote para escrever uma função que opera em qualquer valor que você possa solicitar. Isso inclui int, floats e strings. Aqui está um exemplo que demonstra a sintaxe:
importar "golang.org/x/exp/constraints"
funçãoMáx.[Restrições T. Encomendado](entrada[]T) (máximoT) {
para _, v := intervalo de entrada {
se v > máximo {
máximo = v
}
}
Retorna máximo
}
Observe que esta função usa o tipo genérico, restrições. Encomendado, para declarar seu parâmetro e seu tipo de retorno.
Os genéricos fornecem incerteza e flexibilidade no código. A proposta e as alterações dos Genéricos são compatíveis com versões anteriores.
Teste de Fuzz
Fuzzing é um técnica de teste de software que valida um programa com dados errôneos, inesperados ou imprevisíveis.
o testando O pacote introduz o fuzzing na versão 1.18, então para definir um fuzz, você precisa importá-lo da biblioteca padrão:
importar "teste"
Após importar o testando pacote, você pode passar um identificador do tipo *teste. F para a função de teste.
funçãotesteFunc(f * teste. F) {
// seu código
}
Fuzzing gera parâmetros de entrada para testar o código. O resultado do fuzzing é imprevisível, pois as entradas não são definidas pelo usuário. Fuzzing deve ajudá-lo a escrever melhores testes de código e detectar bugs que você não sabia que existiam.
Suporte Go Workspace
Espaços de trabalho são diretórios de código-fonte semelhantes que compõem um projeto ou uma unidade maior. Os espaços de trabalho facilitam o gerenciamento e a depuração do código agrupando códigos semelhantes com base na funcionalidade.
Convencionalmente, você subdivide os projetos Go em código-fonte (src) e arquivos executáveis (caixa). A cadeia de ferramentas Go cria o código-fonte do primeiro em executáveis no último. Os espaços de trabalho Go permitem que os desenvolvedores trabalhem com vários espaços de trabalho usando módulos Go com um módulo principal específico.
O comando para criar espaços de trabalho é:
$ vai trabalhar <comando>
Use o trabalhar comando com subcomandos como:
- iniciar → cria uma área de trabalho no diretório especificado.
- usar → adiciona um novo módulo ao go.work, o arquivo do espaço de trabalho go.
- editar → edita o arquivo do espaço de trabalho go.
- sincronizar → sincroniza dependências da lista de construção para os módulos da área de trabalho.
A inclusão de espaços de trabalho para ir aumentaria a produtividade conforme planejado no desenvolvimento da linguagem.
Melhorias de desempenho
Vai a versão 1.18 agora suporta ARM64 Apple M1 e PowerPC de 64 bits na convenção de chamada ABI. Isso resulta em mais de 10% de ganho no desempenho da CPU para usuários desses dispositivos.
Variáveis declaradas e não utilizadas em funções agora são registradas como erros na compilação do programa.
o vá construir comando, juntamente com outros comandos relacionados, suporta o -asan sinalizador, que oferece suporte à interoperabilidade com C/C++. Isso ajudará os desenvolvedores Go a usar programas Go com programas C e C++.
Outras atualizações importantes
o vai pegar comando não instala mais pacotes no modo de reconhecimento de módulo, o que é uma grande mudança de quando você começou com Go. o vá instalar comando substitui obter para ajustar as dependências do módulo nos espaços de trabalho.
Como o verificador de tipos agora lida com genéricos, as mensagens de erro podem ser registradas de forma diferente das versões anteriores.
O tempo necessário para os programas compilarem pode ser mais lento na versão 1.18. Mas isso não afetará o tempo de execução depois que o Go compilar seu programa.
Você pode encontrar os detalhes completos de todas as alterações mais recentes nas notas de versão para Vá 1,18.
Go 1.18 tem várias adições diversas
Usando o Go 1.18, agora você pode escrever código genérico, testar com eficiência usando fuzzing e alternar entre os módulos Go usando espaços de trabalho. Você pode até escrever código que funcione em conjunto com programas C e C++.
Vale a pena aprender Golang hoje?
Leia a seguir
Tópicos relacionados
- Programação
- Programação
- Linguagens de programação
Sobre o autor
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar