相信很多人纠结项目如何组织结构时,看到过 GitHub 上的这个项目:https://github.com/golang-standards/project-layout,到目前为止,这个项目已经 22.8k+ Star 了。
然而,前些天,Go Team Leader Russ Cox 实在看不下去了,在这个项目提了一个 issue:this is not a standard Go project layout。
我想应该有不少人遇到类似 rsc 提到的这个困惑:你的项目没有使用标准的 Go 布局。。。而这个标准的布局,指的就是这项目。
rsc 表示,虽然这个项目在 README 中明确说明了,这个不是官方的。不过无论从项目名称(golang-standards/project-layout)还是里面提到的一些建议,都很容易让人以为是标准。
其实我认为这个项目本身没有什么问题(虽然名字可能确实不太合适),毕竟它是总结了 GitHub 上比较有名的开源项目的出来的。
rsc 提到 pkg 包的问题,但现在很多有名的开源项目,都这么用了。
既然现在社区出现了这个,而且很多人以为是“标准”,那 Go Team 是不是该反思下,为什么会出现这样的情况?Go 官方是不是应该考虑给项目布局一些建议呢。你自己没有,别人有,你又觉得不合适,这是不是不讲道理呢?!别人有,你觉得不好,出一个更好的,我觉得才是正道!!
大家觉得呢?对此,你怎么看?
更新
rsc 回复了「标准」:
- 在根目录下放LICENSE文件
- 在根目录放一个go.mod文件
- 在你认为合适的地方(根目录或者整理到文件夹内),放置 Go 代码。
https://github.com/golang-standards/project-layout/issues/117#issuecomment-828503689
这标准,跟没有差不多?!
有疑问加站长微信联系(非本文作者)

为什么需要定个标准?我觉得宽松才是王道,如此甚好,比如java的mvc框架,这又是一套标准,你用多了,就会觉得是累赘,是束缚!
超级讨厌
这类八股式的项目, 大大的限制了开发者创造性, 当然这类八股,对于新手和代码斯逼中,非常有帮助的那我个人偏好来说, 我就喜欢
扁平化-文件命名前缀的项目结构
(项目代码目录结构越扁平越好)22K Star
已经增长到24K Star
了我也是扁平化