Go现在提供了modules的依赖项管理,对于如何组织项目我有些困惑。
在传统的$GOPATH
模式下,我将组织以下应用程序:
├─ cmd/
| └─ myapp/
| └─ main.go
├─ otherstuff/
| └─ file.go
└─ README.md, etc.
这是我在GitHub上看到的大多数项目的事情。
但是,现在我们有了模块,所以我不确定将go.mod
放在哪里。它是否位于项目的根目录中?它是否放入cmd/[whatever]/
中?我应该还是将main.go
放在cmd/[whatever]
目录中,还是现在放在项目的根目录中?
答案 0 :(得分:2)
模块是一组相关的Go软件包的集合,这些版本一起作为一个单元进行了版本控制。通常,单个版本控制存储库与一个模块完全对应,但是,另一个版本控制存储库可以容纳多个模块。
因此,将go.mod
放在.git
旁边(或等效于某些其他VCS)几乎总是正确的做法。如果每个模块中的代码确实独立于其他模块,则只能在一个存储库中创建多个模块,以使一个模块的版本不会以任何方式影响其他模块。