Go中的内部包

fva*_*arj 4 import package go

如何在Go中导入内部包?

import (

    "runtime/internal/atomic"
    "runtime/internal/sys"
)
Run Code Online (Sandbox Code Playgroud)

像这样没有得到错误:

import runtime/internal/atomic:不允许使用内部包

并在主包中使用内部函数?

I15*_*159 18

背景

Go鼓励将程序结构化为使用导出API进行交互的包的集合.但是,可以导入所有包.这在实现库或命令时会产生张力:它可能会变得足够大以构造为多个包,但是拆分它会将这些附加包中使用的API导出到世界.能够创建具有有限能见度的包装将消除这种紧张.

建议采用Go 1.4的规则

如果导入代码位于以"internal"目录的父级为根的树之外,则不允许导入包含元素"internal"的路径.

简短的回答

你不能(至少很容易),你不应该.

  • 此答案的第一部分逐字复制自:https://docs.google.com/document/d/1e8kOo3r51b2BWtTs_1uADIA5djfXhPT36s6eHRIvaU。(有关更多背景的有用文档)。 (2认同)