GOPATH e GOROOT em Go: valores corretos e erros comuns

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

GOPATH e GOROOT: valores corretos e erros comuns

\n\n

Se você está começando a aprender Go, mais cedo ou mais tarde vai se deparar com as siglas GOPATH e GOROOT. A pergunta "What should be the values of GOPATH and GOROOT?" é uma das mais populares no Stack Overflow, e não é à toa. Iniciantes se confundem, definem valores errados e acabam com erros estranhos na hora de compilar seus projetos.

\n\n

Neste artigo, vamos explicar de forma simples para que servem essas variáveis, quais valores usar por padrão e como migrar para a abordagem moderna com go modules. Vamos nessa!

\n\n

O que é GOROOT?

\n\n

GOROOT é o caminho para a pasta onde o compilador Go foi instalado. Dentro dela estão os pacotes padrão (fmt, net, os, etc.), além dos binários go, gofmt e outras ferramentas.

\n\n

A maioria dos desenvolvedores não precisa definir GOROOT explicitamente. Se você instalou o Go pelo instalador oficial ou gerenciador de pacotes, o compilador já sabe onde ele está.

\n\n

Como verificar o valor atual do GOROOT?

\n

Abra o terminal e execute:

\n
go env GOROOT
\n\n

Exemplo de saída no Linux:

\n
/usr/local/go
\n\n

No Windows (se a instalação foi no local padrão):

\n
C:\\Program Files\\Go
\n\n

Quando é necessário alterar o GOROOT?

\n
    \n
  • Se você moveu a pasta do Go para outro local.
  • \n
  • Se você tem várias versões do Go instaladas e quer alternar entre elas.
  • \n
  • Se você compilou o Go a partir do código-fonte e o instalou em um diretório personalizado.
  • \n
\n\n

Em todos os outros casos, deixe o GOROOT em paz — deixe o Go cuidar disso.

\n\n

O que é GOPATH?

\n\n

Já o GOPATH é uma variável bem mais interessante. Historicamente, o Go exigia que todo o seu código ficasse dentro de uma única área de trabalho. Essa área era definida pelo GOPATH.

\n\n

Por padrão, o GOPATH aponta para:

\n
    \n
  • Linux/macOS: $HOME/go
  • \n
  • Windows: %USERPROFILE%\\go
  • \n
\n\n

Dentro dessa pasta, a estrutura padrão é:

\n
go/\n├── bin/        # binários compilados\n├── pkg/        # arquivos objeto compilados e cache\n└── src/        # código-fonte dos seus projetos\n    ├── github.com/\n    │   └── usuario/\n    │       └── meurepositorio/\n    └── exemplo.com/\n        └── minhaapp/
\n\n

Como verificar o valor atual do GOPATH?

\n
go env GOPATH
\n\n

Quais devem ser os valores de GOPATH e GOROOT? (Valores corretos)

\n\n

Aqui está a resposta direta para a pergunta principal:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
VariávelValor padrão (Linux/macOS)Valor padrão (Windows)
GOROOT/usr/local/goC:\\Program Files\\Go
GOPATH$HOME/go%USERPROFILE%\\go
\n\n

Importante: GOPATH e GOROOT devem ser pastas diferentes. Nunca defina ambas com o mesmo valor!

\n\n

Erros comuns e como corrigi-los

\n\n

Erro 1: "GOPATH not set" ou "cannot find package"

\n

Se você está usando a abordagem antiga (anterior às versões 1.11-1.13), o Go procura pacotes dentro de $GOPATH/src. Se você colocou seu projeto em outro local, o compilador não vai encontrá-lo.

\n\n

Solução:

\n
    \n
  • Ou mova o projeto para $GOPATH/src.
  • \n
  • Ou

Blogs

Book Recommendations