💡
函数init
  • 无参、无返回值
  • 无法显示调用,运行时调用,顺序、仅执行一次
  • 一个包或一个go文件可以包含多个init函数
  • init函数在编译期间,非并发调用,go会按顺序调用
  • 不要依赖init函数的调用次序
 
init适合做包级数据初始化以及初始化状态检查

程序初始化顺序

  • 等价于包的初始化
  • go遵循【深度优先】的规则,先初始化依赖层级最深的包,然后依次往外初始化
  • 根据包的初始化顺序,依赖其它包。依次初始化包、const、var、init