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:

instagram viewer
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

CompartilharTweetCompartilharE-mail

Tópicos relacionados

  • Programação
  • Programação
  • Linguagens de programação

Sobre o autor

Equipe MUO

Assine a nossa newsletter

Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!

Clique aqui para assinar