go - 防止第三方导入包

标签 go

对于我当前的项目,我正在实现一个代码(单独的包)作为二进制文件的一部分,它(这个包)也可以被其他项目(二进制文件)导入,就像它是一个库一样。此类包不是共享库的一部分的原因是它的功能与上述项目紧密相关。

问题是这个包提供了一个有两个实现的接口(interface)

  • 一个可以直接访问底层数据库的,只能在当前项目中使用
  • 另一个带有要导入其他项目的 HTTP 请求(HTTP 请求转到当前项目)

我的问题是:Go 中是否有一种机制如何防止包的某些部分或其子包被其他项目导入

这主要只是一个美学问题,因为在当前项目之外使用时,数据库访问实现根本不起作用(抛出错误)。

最佳答案

是的,您可以使用 internal directory .

Code in or below a directory named "internal" is importable only by code in the directory tree rooted at the parent of "internal".

关于go - 防止第三方导入包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741357/

相关文章:

pointers - 为什么 Go 不允许获取映射值的地址?

go - super 账本结构 : chaincode deploy connection error

执行RFC7523

http - 监听 "0.0.0.0:80"和 ":80"有什么区别?

go - 如何在 for 循环中创建持续时间 -(不匹配类型 int 和 time.Duration)

validation - GoLang 验证器非必填字段返回错误

go - Go语言中的Mach ports和Channel有什么关系?

go - 无法让 GetItem 与 goamz dynamodb 一起正常工作

go - 使用 range for 循环遍历所有方法

go - 在一个案例中有多个选项,然后在案例中进行一个循环