O que você precisa para começar
Para desenvolver em Go, você precisa de: (1) o compilador e ferramentas (comando go), (2) variáveis de ambiente corretas (principalmente PATH), (3) um diretório de trabalho (workspace) e (4) um editor + terminal para executar comandos. A instalação moderna do Go usa módulos por padrão, então você não precisa “prender” seus projetos dentro do GOPATH, mas ainda é importante entender o que ele é e para que serve.
Instalação do Go (Windows, macOS e Linux)
Windows
- Baixe o instalador oficial (
.msi) para Windows (amd64/arm64 conforme seu PC). - Execute o instalador e mantenha o caminho padrão (ex.:
C:\Program Files\Go). - O instalador normalmente configura o
PATHautomaticamente. Ainda assim, valide no terminal.
Abra o PowerShell e verifique:
go version
where go
$env:Path -split ';' | Select-String -Pattern 'Go'macOS
- Baixe o pacote oficial (
.pkg) e instale (geralmente em/usr/local/goou/opt/homebrewdependendo do método). - Depois, garanta que o binário do Go esteja no
PATH.
Verifique no Terminal:
go version
which go
echo $PATHSe precisar ajustar o PATH, edite seu arquivo de shell (ex.: ~/.zshrc ou ~/.bashrc):
export PATH="$PATH:/usr/local/go/bin"Recarregue:
- Ouça o áudio com a tela desligada
- Ganhe Certificado após a conclusão
- + de 5000 cursos para você explorar!
Baixar o aplicativo
source ~/.zshrcLinux
Há duas abordagens comuns: pacote da distro (pode estar desatualizado) ou tarball oficial (recomendado para ter versões recentes).
Instalação via tarball oficial:
- Baixe o arquivo
goX.Y.Z.linux-amd64.tar.gz(ou arm64) e extraia em/usr/local.
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf goX.Y.Z.linux-amd64.tar.gzAdicione ao PATH (em ~/.profile, ~/.bashrc ou ~/.zshrc):
export PATH="$PATH:/usr/local/go/bin"Recarregue e valide:
source ~/.profile
go version
which goValidando a instalação: go version e go env
Após instalar, valide com:
go versionPara inspecionar o ambiente e caminhos usados pelo Go:
go envAlgumas variáveis importantes para conferir:
GOROOT: onde o Go está instalado.GOPATH: workspace padrão (não obrigatório para módulos, mas ainda usado para cache e binários).GOMOD: caminho dogo.moddo projeto atual (ou/dev/nullse não estiver em um módulo).GOCACHE: cache de build.GOMODCACHE: cache de módulos baixados.GOBIN: diretório onde binários instalados viago installpodem ser colocados (se vazio, usa$GOPATH/bin).
Entendendo GOROOT, GOPATH e diretórios de cache
GOROOT (instalação do Go)
GOROOT aponta para a pasta onde o Go foi instalado e onde ficam o compilador, a biblioteca padrão e ferramentas. Em instalações comuns, você não precisa definir GOROOT manualmente; o comando go geralmente detecta automaticamente.
Como ver:
go env GOROOTGOPATH (workspace “clássico” e utilidades atuais)
GOPATH é um diretório de trabalho historicamente usado antes dos módulos. Hoje, com módulos, seus projetos podem ficar em qualquer lugar (ex.: ~/dev/meu-projeto), mas o GOPATH ainda é usado como local padrão para:
$GOPATH/bin: binários instalados comgo install(quandoGOBINnão está definido).$GOPATH/pkg/mod: cache de módulos (GOMODCACHEnormalmente aponta para cá).
Como ver:
go env GOPATHEstrutura típica (não obrigatória para seus projetos com módulos):
$GOPATH/
bin/
pkg/
mod/
src/ (legado; não é necessário para módulos)Cache (GOCACHE e GOMODCACHE)
O Go usa cache para acelerar builds e downloads:
GOCACHE: cache de compilação (artefatos intermediários). Pode ser apagado se necessário.GOMODCACHE: onde os módulos baixados ficam armazenados (normalmente dentro de$GOPATH/pkg/mod).
Ver caminhos:
go env GOCACHE
go env GOMODCACHELimpeza útil em casos de corrupção ou inconsistência:
go clean -cache
go clean -modcacheConfigurando o PATH (e GOBIN) corretamente
Para usar o comando go em qualquer terminal, o diretório .../go/bin precisa estar no PATH. Além disso, para executar ferramentas instaladas via go install, inclua também o diretório de binários do seu usuário ($GOPATH/bin ou $GOBIN).
macOS/Linux: exemplo recomendado
No seu arquivo de shell (ex.: ~/.zshrc):
export PATH="$PATH:/usr/local/go/bin"
export PATH="$PATH:$(go env GOPATH)/bin"Recarregue:
source ~/.zshrcWindows: PATH e GOPATH/bin
No Windows, você pode configurar via “Variáveis de Ambiente” do sistema. Garanta que:
C:\Program Files\Go\bin(ou o caminho de instalação) esteja noPath.%USERPROFILE%\go\bin(padrão doGOPATH) esteja noPathpara executar ferramentas instaladas.
Valide no PowerShell:
go env GOPATH
Test-Path (Join-Path (go env GOPATH) 'bin')Criando um workspace prático (com módulos)
Uma organização simples e prática é manter seus projetos em uma pasta como ~/dev (macOS/Linux) ou C:\dev (Windows). O importante é: cada projeto Go deve ter seu próprio go.mod.
Exemplo de criação de projeto
Crie uma pasta e inicialize o módulo:
mkdir -p ~/dev/hello-go
cd ~/dev/hello-go
go mod init example.com/hello-goCrie um arquivo main.go:
package main
import "fmt"
func main() {
fmt.Println("Olá, Go!")
}Execute:
go run .Gere um binário:
go build -o hello
./helloNo Windows (PowerShell):
go build -o hello.exe
./hello.exeFluxo mínimo de desenvolvimento: editor + terminal
1) Editar o código
Use um editor com suporte a Go (realce de sintaxe, gofmt ao salvar, e integração com ferramentas). O ponto-chave é: você edita arquivos .go e roda comandos no terminal dentro da pasta do projeto (onde está o go.mod).
2) Formatar com gofmt (padrão da linguagem)
O Go tem um formatador oficial. Formate arquivos específicos:
gofmt -w main.goOu formate o projeto inteiro (recomendado):
gofmt -w .Dica: configure o editor para rodar gofmt ao salvar. Isso evita discussões de estilo e mantém o código consistente.
3) Organizar imports automaticamente
gofmt organiza imports em muitos casos, mas a ferramenta mais comum para ajustar imports (remover não usados, ordenar e agrupar) é goimports. Instale:
go install golang.org/x/tools/cmd/goimports@latestGaranta que $(go env GOPATH)/bin esteja no PATH e rode:
goimports -w .4) Checar o projeto
Comandos úteis no dia a dia:
go test ./...para rodar testes do módulo inteiro.go vet ./...para análises estáticas comuns.go fmt ./...(atalho que usa gofmt em arquivos do pacote; muitos preferemgofmt -w .para formatar tudo).
go test ./...
go vet ./...5) Estrutura mínima de pastas
Para um projeto pequeno:
hello-go/
go.mod
main.goPara crescer com organização simples:
meu-app/
go.mod
cmd/
meu-app/
main.go
internal/
...cmd costuma conter pontos de entrada (executáveis). internal ajuda a manter código não importável por outros módulos (encapsulamento). Use essa estrutura quando fizer sentido; não é obrigatório para projetos pequenos.
Checklist de verificação (instalação e ambiente)
| Item | Como verificar | Resultado esperado |
|---|---|---|
| Go instalado | go version | Mostra versão e plataforma |
| Binário correto no PATH | macOS/Linux: which go | Windows: where go | Aponta para a instalação desejada |
| GOROOT coerente | go env GOROOT | Pasta de instalação do Go |
| GOPATH definido | go env GOPATH | Diretório do usuário (ex.: ~/go ou %USERPROFILE%\go) |
| Binários de ferramentas no PATH | go env GOPATH + checar bin | .../go/bin e .../GOPATH/bin no PATH |
| Módulo inicializado | ls / dir e go env GOMOD | go.mod existe e GOMOD aponta para ele |
| Build e run | go run . e go build | Executa e gera binário sem erros |
Solução de problemas comuns
1) “go: command not found” (macOS/Linux) ou “go não é reconhecido” (Windows)
- O
PATHnão inclui o diretóriobinda instalação do Go. - Confirme onde o Go foi instalado e adicione ao
PATH.
Diagnóstico:
echo $PATH
which goNo Windows:
$env:Path
where go2) Ferramentas instaladas com go install não rodam (ex.: goimports)
Causa típica: $GOPATH/bin (ou %USERPROFILE%\go\bin) não está no PATH.
Diagnóstico:
go env GOPATH
ls $(go env GOPATH)/binSe o binário existe, inclua esse diretório no PATH.
3) Permissões no Linux/macOS ao instalar/atualizar
Se você instalou em /usr/local/go, operações de extração/remoção exigem sudo. Evite misturar métodos (ex.: instalar via gerenciador de pacotes e também via tarball) para não criar conflitos.
4) Múltiplas versões do Go no sistema
Sintoma: go version mostra uma versão diferente da esperada, ou which go/where go aponta para um caminho inesperado.
Passos:
- Descubra qual binário está sendo usado:
which go(macOS/Linux) ouwhere go(Windows). - Remova/ajuste entradas duplicadas no
PATHe deixe primeiro o caminho da versão desejada. - Reabra o terminal para garantir que o ambiente foi recarregado.
5) “GOMOD=/dev/null” e comandos não reconhecem o módulo
Isso acontece quando você não está dentro de uma pasta com go.mod (ou está em uma subpasta fora do módulo).
Verifique:
go env GOMOD
pwd
lsSe necessário, volte para a raiz do projeto (onde está o go.mod) ou inicialize um módulo:
go mod init example.com/meu-modulo6) Cache ou dependências inconsistentes
Se houver erros estranhos após mudanças de versão ou dependências:
go clean -cache
go clean -modcache
go mod tidygo mod tidy ajusta dependências do go.mod e go.sum para refletir o que o código realmente usa.