我应该如何构建一个简单的Go项目?

时间:2014-02-13 18:44:29

标签: go

我有一个非常简单的Go项目,我正在尝试重组,以便它遵循正常的Go项目结构(所以我可以运行go build)。

我目前有两个源文件,都是package main。所有文件,包括我的程序在运行时需要的一些文本配置文件。

现在,看起来像是:

<project_name>
    - main.go
    - source2.go
    - config_file.txt

当我在这个目录中时,我可以运行go build,并创建一个二进制文件(名为<project_name>。这很好用,但我想把它设置为更好地遵循Go标准包结构(特别是使Intellij IDEA将其识别为有效项目)。

现在,我在Git中拥有整个&lt; project_name>目录,我想保持这种方式。

我尝试将源文件放在名为src的文件夹中,但后来go build表示没有要编译的源文件。

我应该如何构建这个?

编辑:

弄清楚将内容放入src/的问题:我需要运行go build <project_name> 我仍然想知道是否有办法在没有全局GOPATH的情况下建立项目。我将所有项目都放在一个文件夹下,每个项目都有一个子文件夹(并非所有项目都是Go项目)。我想保留这个系统。

我想要的是:

projects/
    - project 1/
         - src/
         - bin/
         - pkg/
    - project 2/
         - src/
         - bin/
         - pkg/

然后我希望能够运行go build <project_name>(当我在该项目的目录中时)并让它编译该项目。这可能吗?

1 个答案:

答案 0 :(得分:6)

How to Write Go Code中介绍了组织Go代码的“规范”方式。它在this blog post中以不太正式的方式解释。这个概念与您的想法相反 - 您有一个工作空间目录,由GOPATH环境变量指定,并且所有项目的源代码都驻留在工作空间的“src”目录的子目录中。如果在GOPATH中指定了多个目录,则可以有多个工作区。

我建议你给出“推荐”方式来组织你的代码,也许它会在你身上发展。这看起来有点不寻常,但它有其优点。如果你发现你绝对不能忍受它,你仍然可以解决它,例如通过脚本设置GOPATH dinamically。

至于Golang IDEA插件,我前一段时间尝试过的最后一个版本还没有支持这个项目结构,但是新版本可能已经改变了。事实上,插件的作者之一(dlsniper)已经在上面的博客文章中添加了评论,给出了仍然使用全局GOPATH的替代项目结构的示例。