"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Técnicas de construção: um mergulho profundo no Go

Técnicas de construção: um mergulho profundo no Go

Publicado em 2024-11-08
Navegar:608

Building Techniques: A Deep Dive into Go

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.

A abordagem de Go para construção

Go, projetado pelo Google, adota uma abordagem única de construção que enfatiza a simplicidade e a velocidade.

Um comando

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

Compilação cruzada em 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.

Módulos Go

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.

  • go mod init inicializa um novo módulo.
  • O arquivo go.mod rastreia dependências e suas versões.

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).

Técnicas Avançadas de Construção Go

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!

  • Construa bibliotecas compartilhadas: vá build -buildmode=c-shared
  • Construa plug-ins: vá build -buildmode=plugin
  • Obtenha a lista completa em https://pkg.go.dev/cmd/go#hdr-Build_modes

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!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/gdsources/building-techniques-a-deep-dive-into-go-27ed?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

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