请注意,本文编写于 546 天前,最后修改于 546 天前,其中某些信息可能已经过时。
Go语言的init函数是一个特殊的函数
- init函数在每个包完成初始化后自动执行,并且执行优先级比main函数高。
- 每个包可以有多个init函数,它们按照定义的顺序依次执行。
- 同一个包中不同文件的init函数执行顺序是按照文件名字符串比较的顺序执行。
- 不同包的init函数执行顺序是按照包导入的依赖关系决定的,先执行被依赖的包的init函数,最后执行main函数。
- init函数不能被其他函数调用,它会在main函数执行之前自动被调用。
init函数通常用于以下几个方面:
- 对变量进行初始化:可以在init函数中对包级别的变量进行初始化操作。
- 检查/修复程序的状态:可以在init函数中检查程序的状态,并进行必要的修复操作。
- 注册:可以在init函数中注册一些需要在程序运行前完成的操作,例如注册数据库连接、注册路由等。
- 运行一次计算:可以在init函数中执行一些只需要运行一次的计算操作,例如生成一些静态数据等。
init函数不能被显式调用,它会在程序运行前自动执行。另外,如果在init函数中使用了println()或print()函数,它们的执行顺序可能不会按照预期,因此在正式环境中不推荐使用这些函数。
Learn more:
- 五分钟理解golang的init函数 - 知乎
- Init函数和main函数 · Go语言中文文档
- Go init函数详解_go init函数原理-CSDN博客
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!