我已经搜索了在项目中组织 Go 文件的解决方案,发现 this post .我想知道该帖子第二部分中使用的 cmd
文件夹的作用是什么。对于 Go 编译器来说,这是一个神奇的词吗?
另一方面,我正在阅读 Go documentation并且那里没有关于 cmd
文件夹的任何内容。
那么这个文件夹呢?在 Go 中构建支持源文件、项目二进制文件、第 3 方包和单元测试的项目文件的最佳实践是什么。
最佳答案
那么这个 'cmd' 文件夹呢?
post已经说清楚了,总结一下:
- It's not a magic nor standard in Go. It's just a convention.
- You can have multiple binaries when putting them into a sub-folder which is not possible in the root folder.
- By making you taking your binary as a client instead of a host or portal of your application, it can drives you to the so-called 'library-driven-development' way of architecting your program. This separation 'helps you make a cleaner abstraction' and more common of you code logic.
在 Go 中构建支持源文件、项目二进制文件、第 3 方包和单元测试的项目文件的最佳做法是什么。
我不确定最佳做法。官方文档中有很多关于项目文件结构的提示。 根据我的个人实践,除了二进制文件的 cmd
文件夹之外,我
- 将源文件分组到
src
文件夹内的包(子文件夹)中, - 将第 3 方包复制到 vendor 文件夹;
- 将单元测试文件与其目标源文件并排放置。
这些链接可能会有所帮助:
Organizing Go code
The Go Blog: Organizing Go code
The Go Blog: Package names
golang-standards/project-layout (*)
正如@DiegoMendes 所指出的,最后一个链接中的提案存在争议。您还应该检查 the issue 117那个包含很多有值(value)信息的repo。
关于go - 用于在 Go 中组织项目文件的 Cmd 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32028287/