init
函数是个无参数,无返回值的函数,其主要作用是做一些包级数据的初始化与初始状态的检查工作。
func init() {
...
}
Golang 运行时会在包初始化时调用包中定义的 init
函数,而用户的代码是不能调用 init
函数的,编译时会报错。
一个包内可以包含多个 init
函数,在初始化时,运行时会按照一定顺序执行所有 init
函数,并且不会并发调用,每个 init
函数都只会被执行一次。
在一个包中 init
的执行顺序是在其他包级变量之后。
虽然运行时会按固定的顺序执行 init
函数,但是 Golang 的习惯是不依赖 init
函数的执行次序。