使用Go
时如何组织项目?我对工作区部分感到有点困惑。我已经阅读了以下内容:https://golang.org/doc/code.html#Workspaces ......这部分让我失望了:
典型的工作区包含许多包含许多包和命令的源存储库。大多数Go程序员将他们所有的Go源代码和依赖项保存在一个工作区中。
这是否意味着我创建的每个项目都是一个单独的工作区?例如,如果两个项目使用相同的包,我将在我的计算机上拥有该包的两个副本。
或者,这是否意味着您有一个主工作区,您的项目共享这些包?
有点困惑。
答案 0 :(得分:7)
我个人希望每个项目都有不同的GOPATH。如果您可以使用工具自动执行该过程,则可以使用vg来管理项目的不同GOPATH。
巧妙的是,它与大多数shell集成并自动检测项目cd
。
答案 1 :(得分:4)
您有一个工作区,项目共享包。
它出现在overview section:
中Go程序员通常会将所有Go代码保存在一个工作区中。
请注意,这与其他编程环境不同,在这些环境中,每个项目都有一个单独的工作区,工作区与版本控制存储库紧密相关。
修改:如果您使用vendoring,则可以为每个项目有效地获取单独的工作区。这使得事情更接近其他编程语言的工作方式。
答案 2 :(得分:4)
到目前为止,当我想使用不同版本的Go或者我想将我的私人作品与孩子和我玩的代码分开时,我使用不同的工作区。此外,如果我想玩一些开源代码,但想要一个简单的方法来清理它。
像
这样的东西mk /tmp/tmpgo
cd /tmp/tmpgo
# Copy or edit a setenv file
. setenv # I use bash
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\] '
这给了我一个go工作区,它有自己的bin,src,pkg子目录。我可以得到任何我想要的东西。如果我愿意,我可以删除整个临时目录。从像github.com这样的存储库中获取东西的趋势是从其他贡献者那里获得许多包,但是因为它将它们全部放入一个干净的src子目录中,所以很容易使用find并查看已被删除的内容。之后再次从高清中删除所有内容变得更加容易。