为了账号安全,请及时绑定邮箱和手机立即绑定

我可以有多个 GOPATH 目录吗?

我可以有多个 GOPATH 目录吗?

Go
萧十郎 2021-12-20 19:22:52
我将 GOPATH 设置为/Users/me/dev/go我有/Users/me/dev/go/src/client1/Users/me/dev/go/src/client2/Users/me/dev/go/src/client3并且/Users/me/dev/client1/rails_project/Users/me/dev/client2/php_projectetc.我不喜欢在我的根 dev 文件夹中我被迫拥有一个包含许多不同客户的 go 项目的通用“go”目录。
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

是的,GOPATH是目录列表(如PATH)。跑去go help gopath了解详情。例如,在 Linux 上,我有:


$ go env

GOROOT="/home/peter/go"

GOPATH="/home/peter/gopath:/home/peter/public/gopath"

$

我在 Windows 上有类似的东西。


注意:Linux:用作GOPATH列表分隔符;Windows;用作分隔符。


如果您使用go get它将默认为列表中的第一个目录。


运行go env以检查一切是否正确。


查看完整回答
反对 回复 2021-12-20
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

这篇博客文章很好地解释了如何以及为什么要在 GOPATH 中设置多个值,尤其是当它说:

我的 GOPATH 由 3 个文件夹或 GOPATH 工作区组成。

第一个是我的登陆工作区。因为它是最先列出的,所以每当我去获取任何新包时,它总是最终出现在这个工作区中。

Go 搜索 GOPATH 中列出的每个目录以查找源代码,但新包总是下载到列表中的第一个目录中。我制定了永远不要在那里做任何开发的规则,所以只要它变得太大,清理这个文件夹总是完全安全的(我不使用 Go 包)。毕竟,它只有我可以通过 go get 再次获取的 Go 包。

我的第二个工作区用于所有的个人 Go 包以及我可能想要“收藏”或进行一些开发的任何其他包。我将我经常使用的东西从第一个工作区移到第二个工作区。

我的第三个工作区专用于我工作中的私有 Go 包及其依赖项。将我的工作包与我的所有个人物品分开很方便,这样它们就不会相互妨碍。


查看完整回答
反对 回复 2021-12-20
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

是的。

引用 Go 本身:

$ go help gopath

Go 路径用于解析导入语句。它由 go/build 包实现并记录在其中。

GOPATH 环境变量列出了查找 Go 代码的位置。
在 Unix 上,该值是一个以冒号分隔的字符串。
在 Windows 上,该值是以分号分隔的字符串。
在计划 9 上,该值是一个列表。

必须将 GOPATH 设置为在标准 Go 树之外获取、构建和安装包。

GOPATH 中列出的每个目录都必须具有规定的结构:

src 目录包含源代码。src 下面的路径决定了导入路径或可执行文件名称。

...


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信