将 GOPATH 设置为我的工作区的原因是什么?

What is the reason to have GOPATH set to my workspace?

我到处都看到我的 GOPATH 必须设置为我的工作区。如果我这样做并使用 go get 从例如 github 获取包,它们都会被添加到我的工作区,但我发现这不是特别有用,因为它使我的工作区变得混乱。在我的工作区中,我希望找到我的代码和我的代码。

所以我现在在 ~/repos/go 中有自己的存储库,并将我的 GOPATH 保留为默认 ~/go。这很完美。我导入的所有库都在 ~/go 中,这让我自己的工作场所 ~/repos/go 干净整洁。这对我来说非常有用,所以我不确定为什么这不是推荐的工作方式。

我错过了什么吗?是否有我破坏的东西或功能无法以这种方式工作?

欢迎所有提示!

[编辑] 解释为什么我的问题与 this question 不同:我知道 GOPATH 做了什么(在使用 go get 时定义放置包的位置和从中导入包的位置) ,但我不知道为什么您需要将 public 代码与您自己的代码放在同一位置。正如@peterSO 在我在下面接受的(优秀)答案中所解释的那样,事实证明不需要它。

go help gopath

Go searches each directory listed in GOPATH to find source code, but new packages are always downloaded into the first directory in the list.


$GOPATH 是一个目录列表。例如,在 Linux、

export GOPATH=$HOME/gopublic:$HOME/goprivate

go get 将所有下载放在列表的第一个目录中:$HOME/gopublic。将所有包放在列表的第二个目录中:$HOME/goprivate.

GOPATH 是 golang 工具链在您尝试编译代码时查看的默认目录。 技术上 100% 没有必要设置一个自定义的,好像我没有记错,它默认为 ~/go/

正如 peterSO 上面所说,GOPATH 是一个列表并将包放入第一个条目。