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.
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.
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
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
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
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
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
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
"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
kubectl, organizam seus pacotes.