【发布时间】:2016-12-09 12:42:09
【问题描述】:
我有一个 go 程序,它检查一个大型存储库,选择一些感兴趣的包,然后生成一个新的 main.go 文件,其中包含:
import(
_ (package of interest here)
_ (another package of interest here)
...
)
func main() {...}
主要对这些包在其init 方法中设置的一些值感兴趣。
但是其中一些包具有 (...)/internal/(...) 路径,因此在尝试运行生成的 main.go 时我会收到 use of internal package not allowed。
是否有一些编译器/链接器/其他标志禁用internal 路径检查?
【问题讨论】:
-
不,没有。您要么必须“手动”调用编译器 (
go tool compile),要么移动这些包。 -
一般来说,如果它们位于
/internal/子目录中,则意味着您要么使用的是添加供应商之前的库(Go 1.5/1.6),要么您不应该使用这些包. -
“手动”重新调用编译器,我发现无法按原样使用 go build 库构建它。
-
我已经能够通过修改
cmd/gopkg 来做到这一点,删除所有使用disallowInternal
标签: go