golang
  • Introduction
  • 环境安装
    • vscode
    • liteide
  • 第一个Go程序
  • Go项目结构
  • Go语言命令
  • 变量
  • 数据类型
    • array
    • slice
    • map
    • struct
    • interface
    • string
    • channel
    • 类型转换
  • 循环语句
  • HTTP编程
  • init函数
Powered by GitBook
On this page
  • 执行顺序
  • 特点
  • 匿名导入
  • 最佳实践

Was this helpful?

init函数

执行顺序

每个包中都有可以有init函数,它闪的执行顺序与包的依赖关系有关。

比如:main函数中导入了A包和B包,而A包也导入到了B包,则执行顺序为 B.init() -> A.init() -> main()

特点

  • init函数只会执行一次,且在main函数之前执行

  • 如果某个包没有被导入,则该包的init函数不会被执行

匿名导入

疑问:既然某个包要初始化,那么该包一定会被调用,那么直接在调用该包的文件中导入该包好了,为什么还要在某个没有引用该包的文件中匿名导入该包?

最佳实践

  • 一个包中最好最多只有一个init函数

  • 除了框架的习惯用法外,最好不要使用匿名导入

PreviousHTTP编程

Last updated 5 years ago

Was this helpful?