最后更新于3年前
这有帮助吗?
package 的数据结构定义在文件$GCROOT/compile/internal/types2/package.go中:
$GCROOT/compile/internal/types2/package.go
type Package struct { path string // 包的引用路径,例如 import "fmt" 中的 "fmt" name string // 包名,即代码中 package xxx 声明的内容 scope *Scope // 包作用域,该包的 public 符号对象都在该作用域内 complete bool // 如果该包的 scope 内包含了所有的 public 符号对象,则为 true, 否则为 false imports []*Package // 该包的依赖 fake bool cgo bool }
包通常以对象文件(.o 或者 .a 文件)的形式存在于文件系统中,而Package则对应一个对象文件在编译器中的内存结构。在编译阶段,包加载器负责完成包的加载与解析,包内符号对象都在scope属性中,下文一节会对加载逻辑做详细介绍。
Package
scope