对于我当前的项目,我正在实现一个代码(单独的包)作为二进制文件的一部分,这个(包)也可以被其他项目(二进制文件)导入,就像它是一个库一样。这样的包不是共享库的一部分的原因是它的功能与提到的项目紧密相关。
问题是这个包提供了两个实现的接口
我的问题是:是否有一种机制在Go中如何防止包的某些部分或其子包被其他项目导入?
这主要只是一个审美问题,因为在当前项目之外使用时,DB访问实现根本不起作用(抛出错误)。
答案 0 :(得分:4)
是的,您可以使用internal directory。
名为“internal”的目录中或下面的代码只能由以“internal”的父目录为根的目录树中的代码导入。