Links
Comment on page

4.4.2 数据结构 - Package

package 的数据结构定义在文件$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属性中,下文包加载器一节会对加载逻辑做详细介绍。