init 函数
- 基本介绍
- 每一个源文件都可以包含一个 init 函数,该函数会在 main 函数执行前,被 Go 运行框架调用,也就是说 init 会在 main 函数前被调用。
- 演示案例:
- init函数,通常可以在init函数中完成初始化工作
//init函数,通常可以在init函数中完成初始化工作
func init() {
fmt.Println("init()...")
}
func main() {
fmt.Println("main()...")
}
![](https://i-blog.csdnimg.cn/blog_migrate/970cc1ad4f6c6c2be0bfaf0ea468535d.png)
inti 函数的注意事项和细节
- 如果一个文件同时包含全局变量定义,init 函数和 main 函数,则执行的流程全局变量定义->init函数->main 函数
- 演示案例
var age = test()
//为了看到全局变量是先被初始化的,我们这里先写函数
func test() int {
fmt.Println("test()")
return 90
}
//init函数,通常可以在init函数中完成初始化工作
func init() {
fmt.Println("init()...")
}
func main() {
fmt.Println("main()...age=", age)
}
![](https://i-blog.csdnimg.cn/blog_migrate/8f663fe4e1b1828f6524aaec6bd366ff.png)
- init 函数最主要的作用,就是完成一些初始化的工作
package utils
import "fmt"
var Age int
var Name string
//Age 和 Name 全局变量,我们需要在main.go 使用
//但是我们需要初始化Age 和 Name
//init 函数完成初始化工作
func init() {
fmt.Println("utils 包的 init()...")
Age = 100
Name = "tom~"
}
package main
import (
"fmt"
//引入包
"go_code/chapter06/funcinit/utils"
)
func main() {
fmt.Println("Age=", utils.Age, "Name=", utils.Name)
}
- 细节说明: 如果 main.go 和 utils.go 都含有 变量定义,init 函数时,执行的流程
![](https://i-blog.csdnimg.cn/blog_migrate/9ae21df57e82357029f85455de3ceaf6.png)