每个源码可以使用1个init()函数
init()函数会在程序执行前(main()函数执行前)被自动调用
调用顺序为main()中引用的包,以深度优先顺序初始化
同一个包中的多个init()函数的调用顺序不可预期
init()函数不能被其他函数调用
Go语言包会从main包开始检查其引用的所有包,每个包也可能包含其他的包。Go编译器由此构建出一个树状的包引用关系,再根据引用顺序决定编译顺序,依次编译这些包的代码。
在运行时,被最后导入的包会最先初始化并调用init()函数。
最后更新于4年前