Aguiar Dev
Golang
Programação·30 de dezembro de 2024·4 min

Golang

Resumo do episódio 65 do AguiarDev Talks. Prefere assistir? Veja o episódio completo →

Tiago Aguiar e Rafael Peixoto recebem Laís Lima, desenvolvedora back-end e organizadora da comunidade GoLang SP, para explicar por que o Go nasceu dentro do Google e como sua simplicidade radical — apenas 25 palavras reservadas — conquistou empresas como Mercado Livre, iFood, Stone e Docker.

O que foi discutido

  • Por que o Google criou o Go para resolver problemas de manutenção em larga escala
  • Como funciona a compilação para binário nativo e a ausência de runtime
  • A liberdade estrutural do Go e o desafio disso para quem está começando
  • Que tipos de projeto costumam ser construídos com Go
  • Como funcionam os testes nativos e o suporte a testes de integração
  • Por que empresas do setor financeiro têm adotado Go com força
  • Como está o mercado de trabalho para quem quer se especializar na linguagem

Principais pontos

O Go nasceu para resolver um problema de manutenção, não de performance

O Google criou a linguagem para lidar com sistemas robustos que se tornavam difíceis de manter com o tempo. A resposta foi eliminar excesso de padrões obrigatórios de orientação a objetos e criar uma linguagem com poucas palavras reservadas, fortemente tipada e com compilação direta para binário — sem camada de interpretação ou máquina virtual.

A liberdade estrutural é a maior vantagem e a maior barreira de entrada

Diferente de ecossistemas com frameworks dominantes, o Go não impõe uma estrutura de projeto. Isso significa que cada empresa, e às vezes cada desenvolvedor, organiza o código à sua maneira — o que gera dúvidas recorrentes em iniciantes sobre onde colocar rotas, conexões de banco e camadas de arquitetura, já que tudo é resolvido com bibliotecas nativas.

Concorrência é o maior diferencial técnico do Go

A linguagem foi desenhada para lidar bem com concorrência através de goroutines e canais, permitindo que múltiplas operações disputem recursos de forma controlada. Um exemplo prático citado foi um gerador de thumbnails de vídeo rodando em paralelo com um processo de leitura de disco, ambos como funções concorrentes dentro do mesmo sistema.

Testes já vêm embutidos, sem exigir frameworks externos

O comando nativo go test permite escrever testes unitários e de integração usando apenas a biblioteca padrão, incluindo geração de mocks a partir de interfaces e detecção de race conditions. Para testes end-to-end, é possível gerar o binário da aplicação e validar contratos HTTP com ferramentas externas ou scripts próprios em Go.

Fintechs lideram a adoção, impulsionadas pela confiança gerada pelo ecossistema

Ferramentas amplamente conhecidas como Docker, Kubernetes e Grafana são escritas em Go, o que gerou confiança na linguagem para lidar com alta escala e concorrência. Esse histórico, somado ao trabalho ativo da comunidade em eventos e conferências, impulsionou a adoção por bancos digitais e empresas de pagamento como Mercado Pago, Stone e Neon.

Frase de destaque

"Go é uma linguagem top da galáxia [...] eles prezaram por manter a simplicidade e não importar um padrão engessado" por Laís Lima

Lições do episódio

  1. A ausência de um framework dominante em Go exige mais pesquisa inicial sobre como estruturar projetos — vale estudar como projetos open source relevantes se organizam.
  2. Entender concorrência (goroutines e canais) é o que diferencia o uso básico do uso avançado da linguagem.
  3. Testes unitários, de integração e detecção de condições de corrida já vêm cobertos pela biblioteca padrão, sem exigir dependências externas.
  4. O setor financeiro é hoje um dos principais empregadores de desenvolvedores Go no Brasil — vale mapear fintechs ao buscar oportunidades.
  5. Participar de comunidades como a GoLang SP acelera o aprendizado prático através de eventos como dojos de código ao vivo.
  6. Vir de outra linguagem orientada a objetos pode gerar estranhamento inicial com a filosofia mais estruturada do Go — é uma curva de adaptação, não um obstáculo definitivo.