【发布时间】:2018-11-13 08:38:29
【问题描述】:
Go 现在提供 modules 用于依赖管理,我对如何组织我的项目有点困惑。
在传统的$GOPATH 模式下,我会按如下方式组织应用程序:
├─ cmd/
| └─ myapp/
| └─ main.go
├─ otherstuff/
| └─ file.go
└─ README.md, etc.
这是我在 GitHub 上看到的大多数项目所做的。
但是,既然我们有了模块,我不确定将go.mod 放在哪里。它是否在项目的根目录中?它进入cmd/[whatever]/ 吗?我应该仍然将main.go 放在cmd/[whatever] 目录中,还是现在应该放在项目的根目录中?
【问题讨论】:
-
cmd/myapp 和其他关于版本控制的关系是什么?如果它们总是一起版本化,则将 go.mod 放在 repo 的根目录中。如果没有,请将 go.mod 放入每个包中。这将需要更多的努力来维护。阻力最小的路径是根目录下的 go.mod。