社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
golang程序初始化先于main函数执行,由runtime
进行初始化,初始化顺序如下:
runtime
需要解析包依赖关系,没有依赖的包最先初始化,与变量初始化依赖关系类似,参见golang变量的初始化);runtime
解析变量依赖关系,没有依赖的变量最先初始化,参见golang
变量的初始化);init
函数;go语言中init
函数用于包(package
)的初始化,该函数是go语言的一个重要特性。
init
函数是用于程序执行前做包的初始化的函数;init
函数;init
函数;init
函数的执行顺序go语言没有明确的定义;init
函数按照包导入的依赖关系决定该初始化函数的执行顺序;main
函数执行之前,自动被调用。main
包中,可以有init
函数init
函数,再执行本包内的init
函数3. 示例
main.go
package main
import (
"fmt"
)
var T int64 = a()
func init() {
fmt.Println("init in main.go ")
}
func a() int64 {
fmt.Println("calling a()")
return 2
}
func main() {
fmt.Println("calling main")
}
输出:
calling a()
init in main.go
calling main
初始化顺序:变量初始化->init()->main()
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!