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

标签 go

我有一个非常简单的 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/

相关文章:

performance - 调用库和直接操作效率有区别吗?

github - Docker:从私有(private) GitHub 存储库中获取

Golang rpc获取错误的结构变量

go - golang 中的对齐

variables - 垃圾收集器是否收集堆栈上的变量?

运行时崩溃

xml - 如何使用多个元素值列表在 golang 中解析 xml。并将它们存储在列表中

sql - 如何使用Go在postgres中将等于(=)更改为不等于(<>)

http - 用于 http.request 的 golang 多个 parseBody

python - 如何在go或python中将结构写入文件?