1
resposta

is not in GOROOT

main.go:4:2: package banco/clientes is not in GOROOT (C:\Program Files\Go\src\banco\clientes) main.go:5:2: package banco/contas is not in GOROOT (C:\Program Files\Go\src\banco\contas

1 resposta

Olá Vinícius,

Nas versões mais recentes do Go (pós 1.13), você não precisa definir variáveis de ambiente como GOPATH, GOBIN, etc. Porém, você precisa ter um arquivo go.mod na raiz do projeto. Isso tornará o diretório um módulo Go. Isso significa que apenas um arquivo go.mod é necessário por repositório. Dentro da raiz do projeto você pode fazer um go mod init remote-repo.com/username/repository

Já o erro que você está tendo, esse comportamento é esperado porque o pacote com o qual estamos trabalhando não faz parte do Go SDK, ou seja, não está no GOROOT. O pacote com o qual estamos trabalhando ficará no espaço de trabalho go ou no diretório de trabalho atual. A execução go install compila e coloca um binário executável em $GOBIN(também conhecido como $GOPATH/bin). A execução go build de dentro de um pacote compila e coloca um executável nesse diretório.

O GOROOT geralmente fica em (C:\Go\src\project\game), se você tem um arquivo go.mod ele deve ficar dentro do diretório GOROOT que o Go irá procurar pelo seus projetos, caso contrário ocorrerá um "package banco/clientes is not in GOROOT"

Exemplo de estrutura do projeto Golang:

└── go -> GOOROOT
    ├── bin
    ├── pkg
    └── src
        └──project
            └── hello
                 └── hello.go