Go项目是否需要在GOPATH下面生活?

时间:2018-05-25 15:22:06

标签: go project

我从Go开始,试图了解GOPATH(可能是GOBIN)。

尝试通过go get获取外部库时出现错误

go get: no install location for directory D:\Seafile\dev-perso\domotiqueNG\services\dispatcher-go\src\dispatcher-go outside GOPATH

通过在$GOPATH/src下面建立项目结构,显然可以解决此错误。

这是否意味着我的所有Go程序必须住在那里?如果GOPATHd:\hello,那么项目bonjouraurvoir确实需要在

d:\hello\src\bonjour
d:\hello\src\aurevoir

只是?

在这种情况下,我该如何

    当个人必须留在d:\home并且专业人员x:\work时,
  • 分开个人和专业项目?
  • 有多个语言项目,其中d:\home\domotique\dispatch在Go中,d:\home\domotique\whatever在Python中,我在d:\home中有几个这样的组合?

2 个答案:

答案 0 :(得分:1)

你实际上可以在GOPATH之外拥有Go项目。但是,在这种情况下,某些工具不能正常工作或根本无法工作。例如,格式化代码并添加缺少导入的goimports将无法找到GOPATH之外的包。您必须使用相对路径手动编写导入:./path/to/your/package

  

当个人必须留在d:\ home和x:\ work的专业人士时,我怎么能分开个人和专业项目?

您实际上可以拥有多个Go工作区(https://github.com/golang/go/wiki/GOPATH)。您只需将GOPATH设置为与操作系统列表分隔符连接的位置列表。例如在Linux上它看起来像这样:

GOPATH="/home/nobody/perso:/home/nobody/work"

尽管如此,我不确定go和依赖管理器等其他工具如何处理多个工作区。

答案 1 :(得分:0)

使用GOPATH时,您可以在/src文件夹中创建子目录,例如,添加主目录和工作目录。事实上,Go项目有example如何组织代码。虽然包需要在自己的文件夹中,但GOPATH中的文件夹本身并不是自动包。

如果您不想在GOPATH的范围内工作,可以将其更改为您想要使用的路径,或将其设置为您的主目录。