如何组织一个 Go 项目?

前段时间读了微信技术团队的一篇文章（ 从微信后端仓库发展史谈谈单仓和多仓 ），讲微信是如何在一步步壮大的过程中，逐步从大仓中剥离公众号、小程序等功能到小仓中，从而解决了各种公共库全都塞在同一个文件夹下导致的耦合、权限等问题。 在这个过程中，微信团队总结了一些经验教训，包括提出了合理规划项目文件结构的重要性：如果一股脑地将所有代码按照功能划分到不同的文件夹中，可能会因为未来的需求，导致文件夹之间产生强耦合，从而影响到代码的可维护性和可扩展性。 看完此文，我想就此谈一谈我对大型项目目录组织的看法。正好，最近 Go 写得比较多，就先从 Go 的项目组织谈起。 不过，谈论 Go 的项目组织前，我不得不搬出 Go 语言作者 Russ Cox 的一则 comment： @rsc in golang-standards/project-layout · issue #117 open_in_new…