Primeiros passos com a linguagem Go: Por onde começar?
Tags: beginners, go, programming
Published: 2022-01-26 12:12:53

Ao se deparar com uma tecnologia nova, sendo alguém experiente em programação ou não, acredito que a mesma pergunta sempre passa pela cabeça de todos: "Por onde eu começo?". Particularmente, eu sempre fui um programador autodidata e, mesmo depois de iniciar uma graduação em computação eu sempre busquei informações de forma proativa e adianto para quem está iniciando na área de desenvolvimento de software que, essa é uma característica essencial para o desenvolvimento técnico de qualquer pessoa programadora.

Ao começar a estudar Go eu percebi uma grande quantidade de alternativas que na minha opinião pode deixar qualquer um confuso sobre como iniciar nos estudos da linguagem. Pensando nisso, resolvi escrever esse artigo com recomendações de por onde começar a estudar e praticar com a linguagem Go baseado na minha experiência estudando programação, com a esperança de que seja útil para qualquer pessoa interessada em aprender a linguagem independente de ter experiência em estudos de tecnologia ou não. Nas próximas seções, apresento opções de passos iniciais com a linguagem Go.

<!-- > Nunca ouviu falar da linguagem Go ou já ouviu mas não sabe nada sobre ela? Dá uma olhada no post no blog da Coodesh e/ou assiste o vídeo da Código Fonte TV no YouTube sobre a linguagem.-->

--- 
## Go Tour

O Go Tour é um fluxo de aprendizado disponibilizado através do próprio [site oficial da linguagem](https://go.dev), onde você pode conhecer a linguagem Go do zero. É ideal para quem está iniciando, nele você navega por páginas onde são apresentados desde conceitos básicos de programação como variáveis e controle de fluxo, até conceitos específicos de Go como a forma como ele lida com concorrência usando _goroutines_ e _channels_.

O Tour consiste de uma sequência de passos agrupados em módulos onde cada um apresenta algum conteúdo simples e a possibilidade de praticar com um exemplo pronto na própria página usando o Go Playground. Não precisa fazer nenhuma instalação e tem pouco (ou quase nenhum) pré-requisito para acompanhar. Está disponível em vários idiomas inclusive em português do Brasil e, é a melhor opção de primeiro passo para iniciantes. Mesmo pra quem já é da área, é interessante acompanhar o Tour como o contato inicial com a linguagem pois não consome muito tempo e apresenta conceitos específicos da linguagem de forma simples.

---
## Curso: Aprenda Go

“[Aprenda Go](https://aprendago.com)” é um canal no YouTube que disponibiliza um curso completamente gratuito apresentado pela [Ellen Körbes](https://twitter.com/veekorbes/). O curso é super completo e organizado em capítulos, cobrindo desde conceitos básicos de programação até as peculiaridades da linguagem Go com uma excelente didática o uso da linguagem na prática. Além disso, fornece muitos exercícios práticos entre um capítulo e outro.

Por se tratar de um curso de aulas em vídeo com mais de 20 capítulos, o conteúdo é um pouco mais extenso e, para pessoas que já possuem experiência com programação pode ser repetitivo no início. Ainda assim, é interessante acompanhar alguém com bastante conhecimento em Go falando sobre a linguagem, principalmente nos capítulos mais específicos sobre a mesma. Para pessoas com menos experiência, é a alternativa perfeita após terminar o Go Tour.

---
## Go Blog

O site oficial da linguagem também possui um [blog](https://go.dev/blog/) onde muitos dos core developers do projeto Go escrevem, além de muitos desenvolvedores ativos na comunidade (Gophers). O blog possui conteúdo escrito apresentando as propostas da linguagem bem como bibliotecas, sintaxe e etc, features novas que foram implementadas em versões específicas e, a maior parte do conteúdo encontrado lá é interessante para aprofundar em assuntos específicos da linguagem Go. Vale destacar que todos os artigos do blog são escritos em inglês

Abaixo seguem algumas postagens que eu julgo interessantes para quem está iniciando entender melhor a idéia do Go e como funcionam alguns conceitos. Também é interessante procurar aplicar os exemplos mostrados nas postagens de forma prática.

1. [Go's Declaration Syntax](https://go.dev/blog/declaration-syntax): Escrito por Rob Pike, um dos idealizadores da linguagem, o artigo fala sobre a sintaxe declarativa do Go comparando com a linguagem C e explica o por quê Go faz as coisas do jeito que faz.

2. [Defer, Panic, and Recover](https://go.dev/blog/defer-panic-and-recover): Esse artigo explica como funcionam três comandos específicos da linguagem Go.

3. [Go Concurrency Patterns: Timing out, moving on](https://go.dev/blog/concurrency-timeouts): Esse breve artigo mostra dicas de como trabalhar com concorrência de melhor forma em Go.

4. [Go Concurrency Patterns: Context](https://go.dev/blog/context): Esse post apresenta a idéia da interface `Context`, uma interface pertencente à biblioteca padrão do Go e que é uma base do paradigma da linguagem para aplicações web.

5. [JSON and Go](https://go.dev/blog/json): Proposta inicial e primeiro contato com o pacote `encoding/json` da biblioteca padrão do Go.

6. [Using Go Modules](https://go.dev/blog/using-go-modules): Um introdução aos modules, a forma como a linguagem Go gerencia conjuntos de pacotes e dependências. Essa postagem é a parte 1 de uma série de 5 postagens sobre o assunto.

- [Bônus] Para quem tem interesse em entender mais afundo como trabalham os modules em Go, eu recomendo estudar o [Go Modules Reference](https://go.dev/ref/mod). Trata-se de uma documentação bem mais extensa e detalhada sobre módulos, e fica mais como uma dica para quem já tem experiência com programação e documentações de tecnologias e tem a intenção de se aprofundar na linguagem.

---
## Pratique, pratique e pratique mais!

Isso não é segredo mas nunca é demais repetir, ninguém aprende nenhuma linguagem de programação somente lendo sobre ela. Então é interessante encontrar meios de praticar o uso da linguagem de forma que se possa aplicar os conceitos estudados, eu recomendo procurar aplicar qualquer conhecimento lido em postagens do blog para fixá-los e entendê-los melhor. O curso Aprenda Go ajuda bastante nesse quesito fornecendo uma boa quantidade de exercícios.

Também existem várias plataformas que podem ser usadas para exercitar programação, tais como: [Codewars](https://codewars.com), [HackerRank](https://hackerrank.com), [Exercism](https://exercismo.io), etc. 

Invente projetos pessoais, isso com certeza vai te fazer exercitar não só o uso da linguagem de programação mas também fornece um certo exercício de criatividade que todo bom desenvolvedor deve ter para resolver os mais variados problemas.

---
## Pra finalizar...

Minha recomendação pessoal é: acompanhar o Go Tour, depois assistir ao curso Aprenda Go procurando praticar com os exercícios (para quem já tem boa experiência em programação, recomendo avançar direto para capítulos mais específicos do curso). Em seguida fazer as leituras dos artigos de blog citados enquanto pratica o uso da linguagem através de exercícios ou mesmo projetos pessoais.

O ecossistema da linguagem Go tem ganhado cada vez mais popularidade no mercado e com isso têm surgido cada vez mais conteúdo sobre a linguagem na internet, dentre esses muito conteúdo gratuito de qualidade. Nesse post busquei apresentar as alternativas mais simples para os primeiros passos com a linguagem de forma a atender tanto pessoas com experiência em programação quanto iniciantes.

Por fim, vale lembrar que isso esses são somente passos iniciais nos estudos da linguagem. Não pare por aqui, busque mais conteúdo, pratique, estude a documentação de módulos do Go, pratique mais um pouco, dê uma olhada no [*Golang Developer Roadmap*](https://github.com/Alikhll/golang-developer-roadmap/blob/master/i18n/pt-BR/ReadMe-pt-BR.md) e busque pelas bibliotecas em alta no mercado, pratique ainda mais... E não deixe que esse loop seja quebrado.