Go语言内部包–控制包成员的对外暴露
Go 语言中的软件包推荐按照:组织名/项目名 的形式安排软件包的文件目录结构,一般「项目名」文件目录下还会按照功能、抽象约定、具体实现等维度再划分一些子目录。在 Go 语言里包的导入路径不同则被判定为不同的包,所以同一个软件包项目下的「功能一」包依赖「功能二」包里的成员时,那么成员必须是导出成员才能被「功能一」包引用。但是这样一来,其他项目或者其他组织的代码也就都可以使用这个导出的成员了,假如包里的一些成员我们只想在指定的包之间共享而不想对外暴露该怎么办呢? Go 语言内部包这个特性可以让我们实现这个目标。