
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 uma conversa sobre a linguagem Go: por que ela nasceu dentro do Google, como sua simplicidade radical muda a forma de estruturar um projeto e por que o setor financeiro brasileiro virou um dos maiores empregadores de quem programa em Go.
O que foi discutido
- Por que o Google criou o Go para resolver problemas de manutenção em sistemas robustos
- Como funciona a compilação para binário nativo e a ausência de runtime ou máquina virtual
- A liberdade estrutural do Go e por que ela trava tanto quem está começando
- Que tipos de aplicação costumam ser construídos com a linguagem, de CLIs a pipelines de deploy
- Como funcionam os testes nativos, mocks a partir de interfaces e detecção de race conditions
- 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
Sobre Laís Lima
Laís é desenvolvedora back-end com cerca de seis anos de experiência em sistemas web — começou no front-end, migrou para o back-end e hoje tem o Go como foco principal, depois de já ter passado por JavaScript, Ruby e Lua. Atualmente trabalha em uma empresa do setor financeiro e organiza a comunidade GoLang SP, que promove encontros presenciais em São Paulo com frequência quase quinzenal, incluindo workshops para iniciantes e dojos de código ao vivo. Também mantém um canal no YouTube com lives semanais de programação em Go, onde documenta o processo real de aprendizado — inclusive os momentos de trava, como a série que batizou de "Coda e Chora" depois de empacar em um projeto com Docker.
Principais pontos
O Go nasceu para resolver um problema de manutenção, não de performance
A linguagem foi criada dentro do Google por uma equipe que lidava com sistemas extremamente robustos, escritos em linguagens orientadas a objetos, cuja manutenção ia ficando cada vez mais lenta e complicada conforme cresciam. A resposta foi investir tempo em criar uma linguagem simples, com poucas palavras reservadas — apenas 25 — fortemente tipada e sem exigir a obediência a padrões rígidos de orientação a objetos ou programação funcional.
"É uma linguagem que foi criada dentro do Google, então foi um projeto que nasceu por pessoas ali dentro que trabalhavam no Google pra resolver problemas lá nos seus data sets, nos seus data centers, e eles tinham alguns programas que eram extremamente robustos com algumas linguagens orientadas a objetos... eles investiram um tempo aí em criar uma linguagem que fosse simples pra poder manter a longo prazo" por Laís Lima
Compilação direta para binário, sem runtime nem garbage collector manual
Uma das decisões centrais do Go foi eliminar a camada de interpretação: o código compila diretamente para binário nativo, para diferentes sistemas operacionais, sem depender de uma runtime ou de uma JVM rodando por trás. O compilador também é rígido quanto a código morto — recusa compilar se houver uma variável ou importação não utilizada — e a linguagem já resolve automaticamente a liberação de memória, sem exigir gerenciamento manual como em C.
"A sacada do Go foi que ela compila diretamente pra código de máquina... eles geram o bináriozão mesmo, e pra vários tipos de sistemas operacionais... você vai lá, clica, começa a executar. Você não teve que instalar nada na sua máquina" por Laís Lima
A liberdade estrutural é a maior vantagem e a maior barreira de entrada
Diferente de ecossistemas dominados por um framework específico, o Go não impõe uma estrutura de projeto — tudo pode ser resolvido com bibliotecas nativas, da conexão com banco de dados à leitura de interfaces de rede da máquina. Isso dá liberdade total, mas também gera as dúvidas mais recorrentes entre iniciantes: onde colocar rotas, como organizar camadas, como estruturar o projeto sem um scaffolding pronto. Quem vem de linguagens como Java tende a tentar recriar camadas e interfaces que o Go não exige de forma explícita.
"Por isso essa liberdade demais eu acredito que tem um momento que ela é o que mais trava as pessoas iniciantes. Eu já dei mentoria, eu converso muito, a maior dúvida lá é isso: como eu estruturo um projeto? O Go não tem um framework que criou um scaffolding... Você consegue fazer tudo com a biblioteca nativa" por Laís Lima
Concorrência é o maior diferencial técnico da linguagem
O Go foi desenhado para lidar bem com concorrência — que é diferente de paralelismo — através de goroutines e canais, permitindo que múltiplas funções disputem os mesmos recursos de forma controlada. Um exemplo prático veio da experiência de Laís em uma plataforma de streaming: um gerador de thumbnails de vídeo rodava como função concorrente lendo o vídeo e escrevendo no disco, enquanto outra função, também concorrente, ficava escutando essas alterações no disco e enviando o resultado adiante — tudo dentro do mesmo sistema, ao mesmo tempo.
"Concorrência é você executar algumas funções do seu sistema disputando os mesmos recursos, não ao mesmo tempo em paralelo... Go oferece canais, que é a forma que as goroutines se comunicam" por Laís Lima
Testes já vêm embutidos na linguagem, sem exigir frameworks externos
O comando nativo go test permite escrever testes unitários e de integração usando apenas a biblioteca padrão. É possível gerar mocks a partir de interfaces — já que interfaces em Go funcionam como contratos de métodos — para simular respostas sem precisar subir todas as camadas da aplicação, além de detectar race conditions diretamente nos testes. Para testes end-to-end, a prática é gerar o binário da aplicação e validar os contratos HTTP com ferramentas externas, como Cypress, ou com scripts próprios escritos em Go.
"Isso já está implícito na linguagem, não precisa baixar nada... dá pra você pegar race conditions, que é aquela condição de corrida, quando mais de uma função está disputando o mesmo recurso e elas vão conflitar. Então nos testes você consegue pegar isso" por Laís Lima
Fintechs lideram a adoção, puxadas pela confiança do ecossistema
Ferramentas amplamente usadas no dia a dia de desenvolvimento — Docker, Kubernetes (incluindo a CLI kubectl), Grafana e a própria CLI do GitHub — 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 como a GopherCon, impulsionou a adoção por empresas do setor financeiro: Mercado Livre, Mercado Pago, iFood, Banco Neon, Stone e a própria empresa onde Laís trabalha hoje mantêm projetos em Go, e boa parte dos convites que a comunidade GoLang SP recebe para eventos vem justamente de fintechs.
"Eu vejo um grande movimento de empresas do setor financeiro utilizando Go... Mercado Livre, o Mercado Pago, eles estão bem fortes na comunidade, eles têm até um web server deles com várias automações... o iFood tem projetos em Go, Banco Neon... Stone também, Stone é forte, fortemente lá na GopherCon também" por Laís Lima
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
- A ausência de um framework dominante em Go exige mais pesquisa inicial sobre como estruturar um projeto — vale estudar como projetos open source relevantes, como o
kubectl, organizam seus pacotes. - Entender concorrência (goroutines e canais) é o que diferencia o uso básico do uso avançado da linguagem.
- 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.
- O setor financeiro é hoje um dos principais empregadores de desenvolvedores Go no Brasil — vale mapear fintechs ao buscar oportunidades.
- Participar de comunidades como a GoLang SP acelera o aprendizado prático através de eventos como dojos de código ao vivo e workshops para iniciantes.
- 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.
- A compilação para binário nativo, sem runtime, é o que torna projetos em Go simples de distribuir — sem dependências para instalar na máquina de destino.