go - 将 GOPATH 设置为我的工作区的原因是什么?
问题描述
我到处都读到我GOPATH
必须设置为我的工作区。如果我这样做并用于go get
从例如 github 获取包,它们都会添加到我的工作区中,但我觉得这并不是特别有用,因为它使我的工作区变得混乱。在我的工作区中,我希望只找到我的代码和我的代码。
所以我现在有我自己的 repos~/repos/go
并将 my 保留GOPATH
为默认值~/go
。这很完美。我导入的所有图书馆都住在里面~/go
,这让我自己的工作场所保持~/repos/go
整洁。这对我很有用,所以我不确定为什么这不是推荐的工作方式。
我错过了什么吗?有没有我破坏的东西或者功能不能以这种方式工作?
欢迎所有提示!
[编辑]解释为什么我的问题与这个问题不同:我知道是什么GOPATH
(在使用 go get 时定义一个放置包的地方和一个从中导入包的地方),但我不知道为什么你需要公开代码与您自己的代码在同一位置。事实证明没有必要,正如@peterSO 在我在下面接受的(优秀)答案中所解释的那样。
解决方案
go help gopath
Go 搜索 GOPATH 中列出的每个目录以查找源代码,但新包总是下载到列表中的第一个目录中。
$GOPATH
是一个目录列表。例如,在 Linux 上,
export GOPATH=$HOME/gopublic:$HOME/goprivate
go get
将所有下载内容放在列表的第一个目录中:$HOME/gopublic
. 将所有包放在列表中的第二个目录中:$HOME/goprivate
.
推荐阅读
- python - 如何使用用户输入来显示图像?
- json - 我的烧瓶路线中缺少 Csrf 令牌问题
- ios - 将 Swift 包添加到 Unity 生成的 XCode 项目
- python - 在python中绘制多个下拉菜单
- sockets - 对网络协议和UseNet的质疑
- c# - 如何在keepass中读取条目的自定义字符串字段?
- spring - 更新 spring-boot 存储库后返回一个空列表而不是 Optional.empty
- java - 匿名类总是必须存在于其他地方吗?
- javascript - 验证了 ReactiveForms 模型之外的输入
- packet - Keysight/IXIA 应用程序发送不完整的数据包