我试图像这样安装doozer:

$ goinstall github.com/ha/doozer

我得到这些错误。

goinstall: os: go/build: package could not be found locally goinstall: fmt: go/build: package could not be found locally goinstall: io: go/build: package could not be found locally goinstall: reflect: go/build: package could not be found locally goinstall: math: go/build: package could not be found locally goinstall: rand: go/build: package could not be found locally goinstall: url: go/build: package could not be found locally goinstall: net: go/build: package could not be found locally goinstall: sync: go/build: package could not be found locally goinstall: runtime: go/build: package could not be found locally goinstall: strings: go/build: package could not be found locally goinstall: sort: go/build: package could not be found locally goinstall: strconv: go/build: package could not be found locally goinstall: bytes: go/build: package could not be found locally goinstall: log: go/build: package could not be found locally goinstall: encoding/binary: go/build: package could not be found locally


当前回答

不建议使用GOPATH和GOROOT配置。

您可以使用GO模块。

例如:

mkdir go_app
cd go_app
go mod init go_app

其他回答

如上所述:

GOPATH环境变量指定您的 工作区。

对于Windows,这对我来说是有效的(在Ms-dos窗口中):

set GOPATH=D:\my_folder_for_go_code\

这将创建一个Ms-dos识别的GOPATH变量,使用如下:

cd %GOPATH%

我读了go help gopath文档,仍然非常困惑,但从另一个go文档页面中发现了这个小块:

GOPATH环境变量指定工作空间的位置。它可能是开发Go代码时需要设置的唯一环境变量。

http://golang.org/doc/code.html#GOPATH

第一次运行go env。 如果你看到go没有安装,你可以通过homebrew或包和/或其他方式安装它。 如果您看到输出,那么您的Go已经安装。 它向你展示了所有已设置和未设置的env。

如果你看到GOROOT为空:

在我的电脑上:/usr/local/go/bin/go 然后export GOROOT=/usr/local/go

如果你看到GOPATH为空:

在计算机的任何位置为go项目创建任意目录,在我的例子中是:~/GO_PROJECTS 然后导出GOPATH=~/GO_PROJECTS

从go 1.8(2017年第二季度)开始,GOPATH将默认设置为$HOME/go

参见第17262期和Rob Pike的评论:

$HOME/go就是这样。 没有唯一的最佳答案,但这是简短而甜蜜的,只有在$HOME/go已经存在的情况下,选择这个名称才会成为一个问题,这只会发生在已经安装了go并且理解GOPATH的专家身上。

通常不应该显式地设置GOROOT。go命令根据它自己的目录位置自动识别适当的GOROOT。


GOPATH默认为$HOME/go。只有当你想把它放在其他地方时,你才需要显式地设置它。

GOPATH包含:

使用go install安装的二进制文件,位于$GOPATH/bin.¹ 可以使用GOBIN环境变量覆盖该位置。 下载的模块源代码和校验和的缓存,位于$GOPATH/pkg/mod。 这个位置可以使用GOMODCACHE环境变量来覆盖。

如果同时设置了GOBIN和GOMODCACHE,而没有设置GO111MODULE=off,那么GOPATH本身应该基本上没有影响。


另外,在传统的GOPATH模式下(也设置了GO111MODULE=off), GOPATH包含:

用于构建包的源代码,存储在根目录树$GOPATH/src中。 使用go install安装的非二进制文件,位于$GOPATH/pkg。 安装非二进制包不再特别有用:go命令有一个构建工件的缓存,从go 1.12开始,即使是在GOPATH模式下,这也是必需的。 构建缓存不在GOPATH中。它的位置可以用GOCACHE环境变量设置。


¹二进制文件也可以在go 1.17及更早的版本上使用go get安装,但go install优先于go 1.16;见https://golang.org/doc/go1.16。