我觉得这个待定的'关闭问题,过于模糊,意见,......'但是这里有。
如何组织我的代码库?
我有一个非常重要的应用程序(unix守护程序),它与其他进程通信,读/写数据库,与Web服务器通信,具有内部状态。在c ++中,我会编写一堆类(可能在主子组件的子目录中)。让我们说这是projd
然后在更高级别,我有与项目相关的实用cli函数。 projcli1,projcli2 ....我假设与一个项目相关的所有代码都在一个GOPATH之下
如果我正在处理几个不相关的项目。我是否还使用一个GOPATH,或者每个项目都有一个。
我试图找到示例代码库,但唯一的大型集合是软件包存储库,这是一堆库 - 这实际上不是一回事。
如果这些问题太过模糊,那么这个问题。同一目录中的所有go文件必须是同一个包吗?
另一个简单的具体问题。我找到了一个很好的对象池实现。它的包裹说“游泳池” - 很好。我在哪里放置它的单个文件。在一个名为'pool'的子目录中,我想有一个名为utils(或类似的东西)的目录似乎我无法做到。我的意思是我不能拥有utils / pool和util / db(比如说)没有一个文件的树目录
答案 0 :(得分:6)
你的问题相当模糊,但你确实在其中提出了几个可回答的问题。
首先,如果您还没有
,请先阅读http://golang.org/doc/code.html你应该只需要一个GOPATH;你可以有几个并在它们之间切换,但我无法想到它的任何用例。
单个目录中的所有go文件必须属于同一个程序包,由编译器强制执行。
在Go中组织一个大型项目时,一切都是关于选择包并决定每个包中的代码。一些有用的提示:
b
以便使用软件包a
中的内容,那么您的布局就会混乱对于您似乎正在谈论的大型项目,我发现它们通常最终会有三到四个包:一个或两个实现独立的核心组件,理论上可以在其他项目中重用,一个实现特定的作为库的应用程序功能,以及实现实际程序(守护程序或用户界面,或者你有什么)的应用程序功能。它总是取决于程序。