Nessa terceira parte da série de setup do ambiente de desenvolvimento Go, vamos falar sobre o VS Code. Você a essa altura já tem o Go instalado em sua máquina como tratamos aqui e já tem o VS Code baixado e instalado com os plugins necessários como tratamos aqui.
Vamos sempre trabalhar com Go Modules e para trabalhar com Go Modules corretamente no VS Code é necessário que na raiz do seu projeto você tenha um arquivo go.mod. Esse arquivo é criado rodando o comando go mod init nome-do-modulo pelo terminal/linha de comando, na raiz do projeto. Um diretório representando um projeto Go só pode ter um arquivo go.mod e esse arquivo fica sempre na raiz, ou seja, você não pode criar uma estrutura aninhada de diretórios com diversos arquivos go.mod, quer dizer, até pode, mas…
O VS Code trabalha com o conceito de workspace. Um workspace pode ter um ou diversos diretórios raiz lado a lado. Cada um desses diretórios é independente dos outros e os colocamos lado a lado no mesmo workspace para facilitar nossa vida quando trabalhamos com diversos projetos em paralelo. Você pode estar se perguntando: Eu não poderia criar uma pasta e dentro dessa pasta criar todos os meus projetos e abrir essa pasta mãe no VS Code e ter acesso a todos os projetos? A resposta é não, isso fere o conceito que vimos ali em cima em relação aos Go Modules. Quer dizer, você pode criar uma pasta de trabalho no seu sistema de arquivos e dentro dessa pasta colocar todos os seus projetos. Você só não pode abrir essa pasta mãe no VS Code. A pasta raiz sempre tem o arquivo go.mod e representa apenas um projeto. Pastas criadas embaixo dela, na visão do Go, pertencem ao mesmo projeto.
Vamos a um exemplo: Você trabalha com diversos projetos em Go, esses projetos podem ser serviços que se comunicam por exemplo, e quer te-los no mesmo workspace.
Abra o primeiro projeto no VS Code clicando no menu superior – Arquivo -> Abrir Pasta. Ache seu projeto no sistema de arquivos e clique em abrir.
Veja no menu lateral esquerdo que você abriu o projeto, no meu exemplo: servico-autenticacao. Veja que se tentar criar um arquivo ou uma pasta eles sempre estarão dentro do projeto principal.
Abra seu terminal/linha de comando, navegue até a pasta do projeto e dê um go mod init nome-do-modulo
cd /Users/nome_do_computador/go/servico-autenticacao go mod init servico-autenticacao
O arquivo go.mod é criado na raíz. Agora no VS Code ao lado do nome do projeto clique em Novo Arquivo. Crie um arquivo main.go
Suponhamos agora que você queira abrir outro projeto pra trabalhar em paralelo com o “servico-autenticacao”. No menu superior do VS Code clique em Arquivo -> Adicionar pasta ao workspace. Procure a pasta do projeto no seu sistema de arquivos e adicione. Veja agora que o VS Code colocou as duas pastas lado a lado, e criou um workspace para seus projetos, ainda sem nome
E assim você pode adicionar quantos projetos quiser ao seu workspace.
Imagine uma arquitetura de microserviços. Apesar de cada microserviço ser auto contido, eles conversam entre si, e você muitas vezes vai trabalhar com vários deles paralelamente. É muito útil e produtivo criar um workspace com todos os seus microserviços lado a lado no VS Code.
Uma dica de como eu particularmente gosto de usar o VS Code é: Você cria diversos workspaces de acordo com os projetos ou empresas que você trabalha. Suponhamos que você tenha um emprego fixo em uma empresa, mas também faça freelances e também tenha projetos pessoais. Independente de onde os seus projetos estejam salvos fisicamente no sistema de arquivos do seu computador. Agrupe cada conjunto de projetos relacionados em um workspace como vimos acima. Depois vá no menu superior do VS Code novamente e clique em “Salvar workspace como”. Dê um nome ao workspace e salve ele no seu desktop. Eu por exemplo, mantenho uma pasta chamada workspaces no meu Desktop e dentro dela coloco todos os arquivos .workspace o qual estou trabalhando no momento. Sempre que você quiser trabalhar naquele projeto ou conjunto de projetos basta dar dois cliques no arquivo .workspace e o VS Code já abre pra você toda aquela estrutura agrupada.
Com esse post encerro essa parte do setup, agora já temos tudo que precisamos pra começarmos a codar com Go.
Até a próxima!