一、包的执行顺序
1.包中的全局常量以及 全局变量 的初始化顺序要先于init()函数,被导入包的init函数的执行顺序要早于main.main()函数.
2.相同包下面的不同 go 文件,按照文件名“从小到大”排序顺序执行
3.非main包只有在被main包导入时才会进行初始化,并且按照 import 的先后顺序执行
4.被递归 import 的包的初始化顺序与 import 顺序相反,例如:导入顺序 main –> A –> B –> C,则初始化顺序为 C –> B –> A –> main
5.一个包如果被其它多个包导入的话,其初始化过程只有一次
6.要避免循环导入包,否则会造成 死锁 。
二、同文件中常量、变量、init和main函数执行顺序
在同一个文件中,初始化顺序为常量->变量->init方法->main方法。