init()函数

  1. 每个源码可以使用1个init()函数

  2. init()函数会在程序执行前(main()函数执行前)被自动调用

  3. 调用顺序为main()中引用的包,以深度优先顺序初始化

  4. 同一个包中的多个init()函数的调用顺序不可预期

  5. init()函数不能被其他函数调用

Go语言包会从main包开始检查其引用的所有包,每个包也可能包含其他的包。Go编译器由此构建出一个树状的包引用关系,再根据引用顺序决定编译顺序,依次编译这些包的代码。

在运行时,被最后导入的包会最先初始化并调用init()函数。

最后更新于