内部Go项目结构

时间:2019-07-26 22:10:27

标签: go organization

对于Go来说是新手,并且大部分来自Java,对于我的项目,我一直将源文件放在多个子包中。例如:

myproject
├── subpkg1
│   ├── ...
│   └── y.go
├── subpkg2
│   ├── ...
│   └── z.go
├── ...
└── x.go

但是,这是有问题的,因为为了使子包与另一个子包进行接口,即使子组件被认为是整个项目的内部成员,后者也必须导出某些功能,类型等。如果该项目是某种类型的库,则只要用户导入(遵循上述示例)myproject/subpkg1,内部功能就会向用户代码公开。

尽管存在上述缺点,上述方法是否仍被认为可以接受?如果没有,组织(大型)项目的惯用方式是什么?

除了我上面描述的方式之外,我还看到了另外两种方法:

  1. 将所有物品放入一个大包装中。这种方法很简单,但是最终您可能会在一个命名空间中得到成百上千个标识符(导出和未导出)。

  2. 编码/二进制标准软件包(可能还有其他软件包)采用了一种有趣的技术,即使用不相关值的哑变量来引入新的命名空间(特别是我指的是binary.BigEndian和{{ 1}}变量)。这是一个好习惯吗?

我已经阅读但未回答我的问题的相关问题/文章:

0 个答案:

没有答案