1. 基本介绍
每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用。
案例说明:
package main
import (
"fmt"
)
// init函数,通常可以在init函数中完成初始化工作
func init() {
fmt.Println("init() ...")
}
func main() {
fmt.Println("main() ...")
}
输出结果是:
2. init函数的注意事项和细节
1) 如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程:全局变量定义 -> init函数 -> main函数
package main
import (
"fmt"
)
var age = test() // 1
// 为了看到全局变量是先被初始化的,我们这里先写函数
func test() int{
fmt.Println("test()")
return 90
}
// init函数,通常可以在init函数中完成初始化工作
func init() { // 2
fmt.Println("init() ...")
}
func main() { // 3
fmt.Println("main() ... age=",age)
}
2)init函数最主要的作用,就是完成一些初始化的工作,比如下面的案例
3)细节说明:面试题: 如果main.go和utils.go 都含有变量定义,init函数时,执行的流程是什么样的呢?