繁体   English   中英

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

[英]Go - Do I have one workspace for all projects, or one workspace per project?

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

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

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

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

有点困惑。

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

整洁的一点是它与大多数shell集成并在你cd它们时自动检测项目。

您有一个工作区,项目共享包。

它在概述部分

程序员通常会将所有Go代码保存在一个工作区中。

请注意,这与其他编程环境不同,在这些环境中,每个项目都有一个单独的工作区,工作区与版本控制存储库紧密相关。

编辑 :如果您使用vendoring ,您可以有效地为每个项目获得一个单独的工作区。 这使得事情更接近其他编程语言的工作方式。

到目前为止,当我想使用不同版本的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并查看已被删除的内容。 后来再次从高清中删除所有内容变得更加容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM