Go tem sido uma linguagem importante em minha carreira pessoal. Eu construí um adServer de áudio sólido e um SSP com ele quando era CTO da Soundcast. Go torna a rede e o paralelismo tão fáceis que parece uma trapaça. Tudo isso com um desempenho muito bom, perfeito para o trabalho que tínhamos que fazer.
Na parte 1, revelamos os fundamentos da fase de construção de software. Neste artigo tornaremos isso mais relevante com a ajuda de uma linguagem que ocupa um lugar especial em meu coração. Na verdade, embora os fundamentos da construção de software sejam semelhantes em todas as línguas, cada ecossistema linguístico tem as suas próprias ferramentas e práticas únicas.
Sem mais delongas, vamos explorá-los, com foco particular em Go.
Go, projetado pelo Google, adota uma abordagem única de construção que enfatiza a simplicidade e a velocidade.
Go vem com um comando de construção. Este comando compila os pacotes nomeados pelos caminhos de importação, juntamente com suas dependências, mas não instala os resultados. Ele gera um arquivo executável.
Exemplo:
go build main.go
Um dos recursos mais úteis do compilador Go é a capacidade de realizar compilação cruzada com extrema facilidade. Tudo o que você precisa fazer é definir as variáveis de ambiente GOOS e GOARCH para atingir as plataformas desejadas.
Exemplo:
GOOS=windows GOARCH=amd64 go build main.go
Isso criará um executável para Windows sob uma arquitetura amd64.
Go mod chegou um pouco tarde porque foi introduzido com Go 1.11, mas é um sistema de gerenciamento de dependências integrado. Antes disso, tínhamos que colocar todos os nossos projetos Go em um diretório dedicado em nossa máquina chamado {$GOPATH}. Embora tenha funcionado, o Go mod nos dá mais flexibilidade agora, o que é ótimo!
O uso é bastante simples, como tudo no Go.
Você pode adicionar compilação condicional usando tags de construção, mas o recurso mais interessante, na minha opinião, é que Go armazena automaticamente em cache a saída da compilação para acelerar compilações subsequentes (é claro, você pode limpar o cache, se necessário).
Incorporando recursos
Se você tiver arquivos estáticos que deseja incluir em seu binário, você pode usar a diretiva //go:embed.
Detecção de corrida
Go é incrível quando se trata de paralelismo. Com seu sistema de goroutines e canais de comunicação entre eles, os desenvolvedores podem facilmente dividir a carga de trabalho do software em diferentes núcleos. Mas também é fácil bagunçar as coisas e criar "corridas".
Uma corrida de dados ocorre quando duas goroutines acessam a mesma variável simultaneamente e pelo menos um dos acessos é uma gravação. Consulte o modelo de memória Go para obter detalhes.
O compilador Go pode ajudá-lo a encontrá-los!
Use o sinalizador de corrida para detectar condições de corrida:
go build -race main.go
Criação de perfil e otimização
Uma das principais coisas que gosto no Go é seu desempenho. Esta linguagem dá resultados sólidos sem muito esforço. Mas se você quiser ir além, o ecossistema Go também oferece ótimas ferramentas para medir seu desempenho e otimizar seu código.
Não vou entrar em detalhes, mas se você quiser se aprofundar no assunto, convido você a ler esta joia: https://www.practical-go-lessons.com/chap-34-benchmarks
Modos de construção personalizados
Às vezes, você não está construindo um software, mas um plugin ou uma biblioteca, por exemplo. A equipe Go protege você. No Go, você pode definir o buildmode para obter o resultado desejado!
Como você pode ver, Go oferece muitos recursos em seu compilador e ecossistema para permitir que os desenvolvedores aproveitem ao máximo a tecnologia Go.
E é isso por hoje. Estarei lançando outro artigo esta semana apresentando as técnicas de construção para TypeScript, então inscreva-se ou siga se quiser ter certeza de não perder!
Até então, boa codificação!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3