【问题标题】:What is the reason to have GOPATH set to my workspace?将 GOPATH 设置为我的工作区的原因是什么?
【发布时间】:2019-02-02 10:05:45
【问题描述】:

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

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

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

欢迎所有提示!

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

【问题讨论】:

标签: go package gopath


【解决方案1】:

go help gopath

Go 搜索 GOPATH 中列出的每个目录以查找源代码,但是 新包总是下载到第一个目录中 列表。


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

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

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

【讨论】:

  • 这太棒了!所以我还想要$HOME/goprivate 的原因是因为它使我也可以从我自己编写的包中导入?或者还有其他原因还要在 GOPATH 中包含 $HOME/goprivate
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2020-07-23
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2021-11-23
    相关资源
    最近更新 更多