package
大约 1 分钟
Go语言使用包(package)作为基本单元来组织源码。
package的优点
编译速度快
- Go要求每个源文件在开头显示地列出所有依赖的包,如果引入了未使用的包,Go语言编译器会报错。
- Go要求包之间不能存在循环依赖,这样包的依赖关系便形成了一张有向无环图,这样每个包可以单独编译也可并行编译
- 已编译的Go包不仅记录了该包的信息,还记录了依赖包的信息。只需读取缓存的编译产物即可。
初始化顺序
Go语言内置函数init()
,常用于包级数据初始化以及初始状态的检查工作。
- 一个Go包可以有多个init()函数
- init()函数不可显示的调用,否则会编译期间报错
- init()只会执行一次
Go包引入其他包,初始化时按照一定的次序逐一调用该包的init函数。
Go语言运行时按照常量->变量->init()顺序进行初始化。