综述
go 语言中的的 ini
函数用于 package
包的初始化,该函数是 go
语言的一个重要的特性
有特征如下
-
init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等
-
每个包可以拥有多个init函数
-
包的每个源文件也可以拥有多个init函数
-
同一个包中多个init函数的执行顺序go语言没有明确的定义(应该是顺序执行)
-
不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序
-
init函数不能被其他函数调用,而是在main函数执行之前,自动被调用
示例:一个函数有多个 init 函数,执行顺序,从上到下
a文件
package a
import "fmt"
func init() {
fmt.Println("A 函数的第一个 init 函数")
}
func init() {
fmt.Println("A 函数的第二个 init 函数")
}
b文件
func init() {
fmt.Println("B 函数的第一个 init 函数")
fmt.Println("B 函数的第二个 init 函数")
}
此时执行 main
函数会有如下输出:
A 函数的第一个 init 函数
A 函数的第二个 init 函数
b 函数的第一个 init 函数
b 函数的第二个 init 函数
注意
- 一般来说,如果只需要一个包的 init函数,不需要这个包另外的方法,可以这么写,这样就表示只执行这个包的 init函数。
`import _ "zhao/init/a"`
-
import
引入package
文件,路径是文件夹的路径
`import _ "zhao/init/a"`
- 一个
.go
文件就是一个源文件