Minha experiência aprendendo Golang

Vinnicius Gomes
4 min readJun 25, 2024

--

Foto de Chinmay B na Unsplash

Nesse último mês tenho gastado meu tempo livre estudando Go, e nesse post quero contar um pouco como tem sido minha experiência nessa jornada de aprender uma stack nova.

Antes de mais nada, o que é Go?

Go, também conhecida como Golang, é uma linguagem de programação de código aberto desenvolvida pela Google. Ela foi criada por Robert Griesemer, Rob Pike e Ken Thompson e lançada publicamente em 2009. A principal motivação por trás da criação de Go foi resolver alguns problemas comuns encontrados em linguagens mais antigas, como C e C++, particularmente no que diz respeito à eficiência, concorrência e simplicidade.

Go é projetada para ser simples e eficiente, com uma sintaxe limpa e direta que facilita a leitura e a escrita de código. Algumas das principais características de Go incluem:

  • Tipagem estática: Go é uma linguagem fortemente tipada, o que significa que o tipo de uma variável é conhecido em tempo de compilação, ajudando a evitar muitos tipos de erros comuns.
  • Compilação rápida: A linguagem é conhecida pela sua velocidade de compilação. Mesmo para grandes projetos, o tempo de compilação é geralmente muito rápido, o que melhora a produtividade dos desenvolvedores.
  • Gerenciamento de memória: Go inclui coleta de lixo (garbage collection), que ajuda a gerenciar a memória automaticamente e reduzir a probabilidade de vazamentos de memória.
  • Concorrência: Uma das características mais destacadas de Go é o seu modelo de concorrência. Go introduz goroutines, que são funções que podem ser executadas de forma simultânea, permitindo que programas façam um uso eficiente de CPUs multicore.
  • Biblioteca padrão rica: Go vem com uma biblioteca padrão abrangente, oferecendo muitas funcionalidades essenciais, como manipulação de arquivos, rede, e servidores web, sem a necessidade de dependências externas.

Go foi projetada para ser eficiente em termos de desempenho e uso de recursos, o que a torna uma excelente escolha para desenvolver sistemas distribuídos, serviços web e ferramentas de linha de comando. É utilizada por grandes empresas, incluindo Google, Dropbox e Docker, devido à sua capacidade de lidar com tarefas de alta performance e escalabilidade.

Por que escolhi Go?

Confesso que não fiz uma lista detalhada de critérios para escolher a próxima linguagem que iria estudar. Foi uma combinação de dois fatores: utilização do mercado e meu interesse pessoal pela linguagem.

Minha carreira sempre foi focada no frontend. Mesmo tendo desenvolvido várias APIs ao longo dos anos, quase todas em Node.js e algumas em PHP (há muito tempo atrás), minha especialidade sempre foi stacks front. Mas este ano decidi me dedicar mais aos estudos de backend, e a escolha inicial foi Go, ainda tem algumas que quero olhar esse ano como Ruby, mas isso fica para outro post.

Como foi o primeiro contato com a linguagem?

Foi amor a primeira vista!

Gostei muito da forma como Go funciona. Por já ter experiência com outras linguagens, achei relativamente tranquilo o primeiro contato. Não tive muitas dificuldades para entender os conceitos e como aplicá-los.

Minha principal dificuldade foi (e ainda é) descobrir a melhor forma de organizar uma aplicação em Go pensando em escala. No entanto, por experiência própria usando React, sei que essa organização vem com a prática ao longo do tempo.

Achei a documentação e os materiais criados pela comunidade muito ricos. A maioria das coisas que precisei fazer até agora encontrei em conteúdos de qualidade por aí.

Como tenho estudado?

Não sou o tipo de pessoa que gosta de consumir cursos, sou mais da turma do hands-on, e com Go não foi diferente. Comprei um curso na Udemy só para ter uma base inicial de como a linguagem funcionava, mas não cheguei a fazer nem um terço dele.

Logo depois de entender a estrutura inicial, parti para o que realmente gosto de fazer quando estou estudando algo novo: aplicá-lo em um caso real (o famoso clone).

Criei um CRUD simples para entender como tudo funcionava, incluindo como usar o Gin e o Gorm, e foi super tranquilo implementar! Deixei o repositório público, que você pode ver aqui:

Se você é um dev Go e quiser dar uma revisada e deixar seus pontos de melhoria, seria super útil!

Depois desse já criei um segundo:

A diferença do primeiro para esse foi que, nesse segundo projeto, desabilitei o Copilot da minha IDE e tentei fazer mais as coisas “na mão”. Foi uma forma de fixar ainda mais o que eu já tinha aprendido.

Conclusões finais

Aprender Go tem sido uma experiência super legal, se você está procurando uma nova linguagem para aprender, essa pode ser uma boa opção!

Os próximos passos são entender um pouco dos conceitos de Goroutines e go channels e aplicá-los em algum projetinho.

E por hoje é isso, bora aprender juntos?!

Piada ruim, eu sei!

Bom, é isso, espero que tenha gostado! E se tiver alguma sugestão deixe aí nos comentários 💬

Se gostou, dê 1 ou 50 claps (Só clicar 50x na 👏)

Obrigado pela leitura!

Me acompanhe por aí! 😜

--

--

Vinnicius Gomes

Senior Software Engineer who love to write about Frontend, JavaScript and Web development. See more about me — vinniciusgomes.dev