每个 package 中每个 init() 函数都会被调用,且顺序固定
- 对同一个 go 文件的 init() 调用顺序是从上到下的
- 对同一个 package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的 init() 函数,对于
- 对不同的 package,如果不相互依赖的话,按照 main 包中"先 import 的后调用"的顺序调用其包中的 init()
- 如果 package 存在依赖,则先调用最早被依赖的 package 中的 init()
每个 package 中每个 init() 函数都会被调用,且顺序固定