Há um conjunto de programas para construir e processar o código fonte Go. Em vez de serem executados directamente, os programas desse conjunto são normalmente invocados pelo programa Go. GOPATH e GOROOT são variáveis de ambiente que definem uma certa disposição e organização para o código fonte Go. Os caminhos do gopath e do goroot podem ser modificados explicitamente, se necessário.
GOPATH
GOPATH, também chamado de diretório de espaço de trabalho, é o diretório onde o código Go pertence. Ele é implementado e documentado no pacote go/build e é usado para resolver declarações de importação. A ferramenta go get download pacotes para o primeiro diretório no GOPATH. Se a variável de ambiente estiver desajustada, o GOPATH tem como padrão um subdiretório chamado “go” no diretório home do usuário. Para verificar isso, digite o seguinte comando:
On Windows:C:\Users\%USERPROFILE%\goOn Linux:$HOME/go
Para verificar o GOPATH atual digite o seguinte comando:
C:\Users\%USERPROFILE%\go env GOPATH
GOPATH contém 3 diretórios sob ele e cada diretório sob ele tem funções específicas:
- src: Ele contém o código fonte. O caminho abaixo deste diretório determina o caminho de importação ou o nome do executável.
- pkg: Ele armazena os objetos do pacote instalado. Cada par de sistema operacional e arquitetura de destino tem seu próprio subdiretório de pkg.
- bin: Ele contém comandos compilados. Cada comando é nomeado para seu diretório fonte.
Ao usar módulos em Go, o GOPATH não é mais usado para determinar importações. Entretanto, ele ainda é usado para armazenar o código fonte baixado no pkg e comandos compilados bin.
GOROOT
GOROOT é para compilador e ferramentas que vêm da instalação go e é usado para encontrar as bibliotecas padrão. Deve ser sempre definido para o diretório de instalação.
Para verificar o GOROOT atual digite o seguinte comando:
C:\Users\%USERPROFILE%\go env GOPATH
É possível instalar as ferramentas Go em um local diferente. Isto pode ser feito definindo a variável de ambiente GOROOT para apontar para o diretório em que foi instalado, embora isto não seja recomendado, pois vem pré-definido com as ferramentas.