在main函数之前执行
init()函数是go初始化的一部分,由runtime初始化每个导入的包,初始化不是按照从上到下的导入顺序,而是按照解析的依赖关系,没有依赖的包最先初始化。
每个包首先初始化包作用域的常量和变量(常量优先于变量),然后执行包的 init() 函数。同一个包,甚至是同一个源文件可以有多个 init() 函数。 init() 函数没有入参和返回值,不能被其他函数调用,同一个包内多个 init() 函数的执行顺序不做保证
执行顺序: import - > const -> var -> init() -> main()
一个文件可以有多个 init() 函数