A Go ganhou fama como uma das linguagens de programação mais simples, incluindo suas vantagens - facilidade de escrever e ler código, na maioria dos casos, suporte mais simples à base de código. Falamos sobre várias vantagens do Go, graças às quais nós da SimbirSoft o usamos em vários projetos altamente carregados com várias arquiteturas, tanto de serviço da web quanto de micro-serviço (SOA).
Aplicação
Esse idioma do sistema é bom para a maioria das tarefas de rede, todos os microsserviços e serviços de macro, serviços da Web e ferramentas de sistema - não é sem razão que muitos especialistas em DevOps o adoram. O Go encontra seu uso no Machine Learning, e alguns desenvolvedores até escrevem sites com ele. Em nossa prática, optamos pelo Go quando desenvolvemos CRMs e produtos de software separados para uso interno, por exemplo, para companhias de seguros. O repositório de idiomas Go padrão também possui um pacote para desenvolvimento móvel, este pacote ainda é suportado, embora existam ferramentas mais adequadas para isso.
Ir: desenvolvimento e reconhecimento
No Google, o desenvolvimento da linguagem Go começou em 2007. Antes disso, a empresa usava Java, Python e C ++, no entanto, eles apresentavam algumas desvantagens (em particular, alto consumo de memória) ou uso limitado. Então o Google começou a desenvolver um novo idioma para suas necessidades.
Quais são os requisitos para o idioma:
- Um arquivo executável (sem dependências)
- Compilação rápida
- Tempo de execução rápido (pelo menos no mesmo nível que Java e C ++)
- Coletor de lixo, minimizando o vazamento de recursos
- Otimização para sistemas multiprocessadores
- Digitação estática
- Minimalismo
- Leveza sintática
- Multiparadigmidade (imperativa, funcional, orientada a objetos)
Para quem não trabalha com a Go, lembre-se brevemente da história de sua criação. O Google começou a pensar na especificação da linguagem em 2007. A versão 1.0 ocorreu em 2012 e, em 2015, a versão 1.5, já sem uma única linha de código C ++. A partir desse momento, a linguagem se compila, o que nos permitiu acelerar o desenvolvimento de tarefas individuais no Go.
A idade média de reconhecimento de um novo idioma na comunidade é de aproximadamente 10 anos, mas o Go já é um dos idiomas mais populares. Em junho de 2019, o Go subiu em 15º em termos de popularidade no mundo, de acordo com o índice
TIOBE , somando três posições em um ano. Entre as razões de seu sucesso estão as seguintes:
- Biblioteca padrão forte
- Sintonia padrão legal
- As funções mais necessárias são apresentadas na “caixa” e as bibliotecas são fornecidas ao código aberto
- Comunidade muito amigável
Por exemplo, os seguintes pacotes estão incluídos na biblioteca padrão (a lista está incompleta):
Ilustração - github.com/ashleymcnamara/gophersSe você não se sentir confortável com a velocidade do seu aplicativo ou de outros parâmetros, poderá trabalhar com o criador de perfis pronto para uso. Para fazer isso, você precisa:
- Registrar importação do criador de perfil: import _ "net / http / pprof"
- Adicione um servidor http para receber resultados do criador de perfil: vá http.ListenAndServe ("0.0.0.0:8080", zero)
Ir ferramentas
Um dos benefícios do Go é seu extenso conjunto de ferramentas padrão. Selecionamos alguns dos utilitários mais interessantes, em nossa opinião (de fato, existem muitos mais):
- benchcmp - comparação de benchmark, desempenho antes e depois das alterações
- go tool cover - análise da cobertura de código por testes
- godoc - geração de documentação baseada em comentários
- goimports - análise de importação (remoção não utilizada, adição ausente)
- gorename - refatoração
- presente - ajuste de apresentação
- go vet - freqüentemente encontrado erro linter
- teste - execute testes e referências
- ir corrigir - corrigir alterações ao alterar a API (antes da versão 1.0)
- ir ferramenta pprof - criação de perfil
- Go fmt - formatação de código por estilo de código
- Detector de corrida - encontrando uma corrida de dados em tempo de execução
Competitividade
Outro ponto forte do Go é que é fácil escrever código competitivo nesse idioma. Para fazer isso, basta usar palavras-chave antes de chamar a função.

Vá treinar
Se você deseja programar no Go, o início levará relativamente pouco tempo. Os desenvolvedores - Core Team - suportam o curso A Tour of Go em vários idiomas, incluindo o russo. Este curso pode ser concluído em apenas 1-3 dias. Em termos de aprendizado, o Go é um dos idiomas mais simples.
Então, o que ler:
ORM em Go
Acredita-se que uma das fraquezas de Go seja a ORM. Talvez isso se deva em parte ao fato de a linguagem ser jovem - nela, muitas ferramentas necessárias estão apenas começando a ser desenvolvidas. Em particular, você pode usar o pacote database / sql para trabalhar com bancos de dados. Quais são os requisitos para o pacote:
- Pacote geral para todos os bancos de dados sql
- Portátil: não contém nenhum recurso no campo de trabalho com bancos de dados. Idealmente, tudo deve funcionar corretamente se você mudar o driver.
- Convertendo tipos Go em tipos de banco de dados padrão (deve ser possível processar tipos específicos)
- Contém conjunto de conexões
- Segurança de rosca para goroutines
Exemplo de consulta SELECT usando database / sql
defer rows.Close() for rows.Next() { var message string err := rows.Scan(&message) if err != nil { log.Panic(err) } fmt.Println(message) } if err := rows.Err(); err != nil { log.Panic(err) }
Como você pode ver no exemplo, muitas ações de modelo terão que ser executadas sempre. Por exemplo:
- objeto de linha fechada: adiar linhas.Close ()
- verifique se há erros err: = lines.Err (); err! = nada desde não está claro por que as linhas.Next () nos retornaram falsos
Por tudo isso, quero usar algo mais universal e simples, por exemplo, ORM.
Tipos de implementações ORM
Quando os desenvolvedores se defrontam com a escolha do ORM para trabalhar com o Go, geralmente são guiados pela classificação no github. Quando escolhemos o ORM para nós mesmos, o Beego teve a melhor classificação (18 mil “estrelas”). No entanto, na prática, o ORM faz parte da estrutura, portanto, a avaliação não é muito objetiva (se você selecionar apenas ORM). Também entre os líderes, o Gorm, em desenvolvimento desde 2013, apóia transações e tem muitas outras vantagens.

No entanto, como demonstrou nossa experiência com o Gorm, certos problemas são possíveis ao usá-lo, especialmente ao testar: por exemplo, corrida de dados ou exclusão de uma chave estrangeira. Podemos assumir as seguintes causas desses erros no Gorm:
- Confirma imediatamente no mestre
- Tags ausentes
- Construtor sql imprevisível
No momento, em nosso trabalho, preferimos vários ORMs que não usam a interface {} - estes são Kallax, Reform e Sqlboiler. Normalmente, usamos o pacote
Golang para migrações e o repositório
orm-bench com benchmarks ORM no Go. Ao mesmo tempo, você não deve perseguir apenas benchmarks. Mais frequentemente, a velocidade não é tão importante quanto a qualidade do código e sua funcionalidade.
Resumir
As vantagens da linguagem Go para o desenvolvedor e para os negócios incluem maior produtividade no desenvolvimento, capacidade de usar menos servidores, facilidade sintática e tempo de treinamento mais rápido para novos desenvolvedores, um grande conjunto de ferramentas e uma comunidade amigável. Apesar de ser uma língua jovem, está em constante crescimento e desenvolvimento. Os recursos do Go tornam a linguagem ideal para uma ampla variedade de projetos, desde tarefas de rede a microsserviços e blockchain.
O artigo foi preparado com base em nosso relatório na reunião Hot Backend em Samara.