版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wyy626562203/article/details/83656020
文章目录
go语言的init函数
go语言中init函数用于包(package)的初始化。
有下面的特征:
-
init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等
-
每个包可以拥有多个init函数
-
包的每个源文件也可以拥有多个init函数
-
同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)
-
不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序
-
init函数不能被其他函数调用,而是在main函数执行之前,自动被调用
应用实例
一个package或者是go文件可以包含多个init函数,init函数是在main函数之前执行的,init函数被自动调用,不能在其他函数中调用,显式调用会报该函数未定义
test1.go
package main
import (
"fmt"
)
func init() {
fmt.Println("this is a init function !")
}
func main() {
fmt.Println("this is a main function !")
}
test2.go
package main
import (
"fmt"
)
func init() {
fmt.Println("this is a first init function !")
}
func init() {
fmt.Println("this is a second init function !")
}
编译运行
go build test1.go test2.go
执行结果:
this is a init function !
this is a first init function !
this is a second init function !
this is a main function !
test1.go中的init函数先执行,接着执行了test2.go中的两个init函数,最后才执行main函数。