Tive um tempo livre nas últimas duas semanas e me dediquei ao estudo de Go, também conhecida como Golang. Comecei pelo Tour of Go, que é um bom ponto de partida para quem já tem familiaridade com outras linguagens. Em seguida, analisei alguns trechos de código das partes que mais me chamaram a atenção no Go by Example. Depois, pesquisei sobre seu ecossistema em chats de IA e, por fim, desenvolvi alguns projetos simples para fixar o que estava estudando. A linguagem é bem documentada, e há ainda muito mais material de estudo disponível em seu site.
Apresentação
Go é uma linguagem de programação desenvolvida pelo Google e lançada em 2009. Criada por Robert Griesemer, Rob Pike e Ken Thompson, a Go surgiu para resolver problemas de eficiência e produtividade em grandes sistemas de software, combinando a simplicidade de linguagens como Python com o desempenho de linguagens como C++. Em 2012, a Go se tornou open source, sob uma licença BSD, o que impulsionou sua adoção pela comunidade de desenvolvedores. Entre suas principais características estão a sintaxe limpa e minimalista, suporte nativo à concorrência com goroutines e channels, coleta de lixo automática e compilação rápida para binários eficientes. Esses atributos fazem da Go uma escolha popular para o desenvolvimento de sistemas escaláveis, microsserviços, ferramentas de DevOps e aplicações em nuvem. Grandes empresas como Google, Uber, Docker e Cloudflare adotam a Go em seus sistemas críticos. Sua integração nativa com tecnologias de nuvem, como Kubernetes e Docker, também reforça sua posição como uma das principais escolhas para o desenvolvimento moderno de software.
Ecossistema
O ecossistema da Go é robusto e está em constante crescimento, impulsionado por sua simplicidade, desempenho e forte suporte da comunidade. A linguagem conta com uma ampla variedade de bibliotecas e frameworks, como o Gin e Echo para desenvolvimento web, Gorm para ORM e Cobra para criação de CLIs (Command Line Interfaces). Além disso, a Go possui ferramentas integradas poderosas, como o go mod para gerenciamento de dependências e o go test para testes automatizados. A comunidade ativa contribui com pacotes de código aberto disponíveis no repositório pkg.go.dev.
Minha opinião pessoal
Embora ainda não tenha colocado nada em produção, creio que o desempenho é um dos pontos fortes da linguagem. Além disso, para colocar um sistema em produção, tudo que você precisa fazer é subir o executável para o servidor e rodar ./meu_sistema. Claro, você pode querer configurar um proxy reverso (não é obrigatório), criar um serviço, etc. Além disso, seu sistema consumirá pouquíssimos recursos de hardware.
Também fui cativado pela simplicidade e minimalismo da linguagem. Os programas ficam legíveis, diferentemente de programas em C/C++. Além disso, você consegue fazer muito com pouco código. Realmente bem parecido com o Python nesse sentido.
Go não é orientada a objetos. Isso pode ser um desafio para muitos programadores que estão habituados a trabalhar nesse paradigma. E realmente é desafiador mudar de paradigma. Entretanto, boa parte dos problemas que são solucionados com classes pode ser suprida pelo tipo struct. Se você já trabalhou com Java, fez comparações de datas, big decimals, strings, etc., deve saber que a orientação a objetos, dependendo da implementação, pode deixar as coisas verbosas sem necessidade. Isso não é uma crítica ao Java — eu uso e gosto. É apenas para demonstrar que a orientação a objetos também tem suas desvantagens.
Go tem vários frameworks web, os que analisei lembram bastante o Express do Node.js. Dentre esses, o que mais chamou minha atenção foi o Echo, embora o Gin seja o mais popular. Também gostei do ORM SQL Gorm. Parece que a comunidade Go se inspira no que há de melhor em cada ecossistema. Se você quiser um sistema de migrações que lembra o Liquibase, há o Golang-Migrate, onde você pode escrever migrações em SQL ou em Go e rodá-las em tempo de execução. Há outros também. Além disso, Go tem suporte nativo a uma infinidade de recursos que estão em bibliotecas separadas em outras linguagens, tais como: gerenciamento de dependências, testes, criptografia, imagens, templates, websockets, etc.
Conclusão
Go é uma linguagem poderosa, moderna e eficiente, com um futuro brilhante pela frente. Ela já é uma das principais escolhas para desenvolvimento de backend, infraestrutura e ferramentas de linha de comando em sistemas modernos. No entanto, o cenário de desenvolvimento de software é diversificado, e cada linguagem tem seu papel.
Me interessei bastante por Go e vou continuar explorando e construindo projetos com ela! A linguagem certamente tem muito a oferecer e será relevante por muitos anos. Nem por isso vou deixar de aprender outras linguagens para expandir minhas habilidades e me adaptar às demandas do mercado.
No final das contas, a "linguagem do futuro" pode ser aquela que melhor resolve os problemas que você quer enfrentar.