我有一个非常简单的 Go 项目,我正在尝试对其进行重组,使其遵循正常的 Go 项目结构(这样我就可以运行 go build
)。
我目前有两个源文件,都带有 package main
.所有文件,包括我的程序在运行时需要的一些文本配置文件。
所以现在,它看起来像:
<project_name>
- main.go
- source2.go
- config_file.txt
我可以运行 go build
当我在这个目录中时,它会创建一个二进制文件(名为 <project_name>
。这工作正常,但我想将其设置为更好地遵循 Go 标准包结构(特别是 Intellij IDEA 将其识别为一个有效的项目)。
现在,我有整个 < project_name>
Git 中的目录,我想保持这种状态。
我尝试将源文件放在名为 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>
(当我在该项目的目录中时)并让它编译该项目。这可能吗?
最佳答案
在 How to Write Go Code 中描述了组织 Go 代码的“规范”方式。 .在 this blog post 中以不太正式的方式进行了解释.这个概念有点与您的想法相反 - 您有一个工作区目录,由 GOPATH 环境变量指定,所有项目的源代码都位于工作区的“src”目录的子目录中。如果在 GOPATH 中指定多个目录,则可以有多个工作区。
我建议您尝试使用“推荐的”方式来组织您的代码,也许您会喜欢上它。它可能看起来有点不寻常,但它有它的优点。如果你发现你绝对不能忍受它,你仍然可以解决它,例如通过在脚本中动态设置 GOPATH。
至于Golang IDEA插件,前段时间我试过的最后一个版本还不支持这个项目结构,但新版本可能已经改变了。事实上,该插件的作者之一 (dlsniper) 已在上述博文中添加了一条评论,给出了仍然使用全局 GOPATH 的替代项目结构的示例。
关于go - 我应该如何构建一个简单的 Go 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21762865/