Go - 我是否为所有项目都有一个工作区,或者每个项目有一个工作区?

Bug*_*rUK 6 go

何时使用Go项目如何组织?我对工作区部分感到有点困惑.我已经阅读了以下内容:https://golang.org/doc/code.html#Workspaces ...这部分让我失望了:

典型的工作空间包含许多包含许多包和命令的源存储库.大多数Go程序员将他们所有的Go源代码和依赖项保存在一个工作区中.

这是否意味着我创建的每个项目都是一个单独的工作区?例如,如果两个项目使用相同的包,我将在我的计算机上有两个该包的副本.

或者,这是否意味着您有一个主工作区,您的项目共享这些包?

有点困惑.

Tom*_*gli 7

我个人希望每个项目都有不同的GOPATH.如果您可以使用工具自动化该过程,则可以使用vg来管理项目的不同GOPATH.

简洁的是它与大多数shell集成并自动检测项目cd.


Wea*_*ter 5

到目前为止,当我想使用不同版本的 Go 或者我想将我的私人工作与孩子们和我玩得开心的代码分开时,我会使用不同的工作区。此外,如果我想使用一些开源代码但想要一种简单的方法来清理它。

就像是

mk /tmp/tmpgo
cd /tmp/tmpgo
# Copy or edit a setenv file
. setenv  # I use bash
Run Code Online (Sandbox Code Playgroud)

setenv 文件看起来像这样。

export GOROOT=$HOME/go16
export GOPATH=$PWD
export GOBIN=$GOPATH/bin
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH
export PS1='\[\033[01;32m\]workspacenamehere\[\033[01;33m\] \W\[\033[00m\] '
Run Code Online (Sandbox Code Playgroud)

这给了我一个带有自己的 bin、src、pkg 子目录的 go 工作区。我可以去拿我想要的任何东西。如果我愿意,稍后我可以删除整个临时目录。从诸如 github.com 之类的存储库中获取东西往往会从其他贡献者那里获取许多包,但是因为它将它们全部放入一个干净的 src 子目录中,所以很容易使用查找并查看已拉下的内容。后来再次从高清中删除所有内容就更容易了。