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, monitoramento, etc.
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.
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 rodá-las em tempo de execução ou por linha de comando. 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.