目录概述init()函数执行时机概述 init()一般用来做一些初始化工作, Go允许定义多个init(),根据init()重复场景不同,可以分为 同文件 单文件中定义多个init(
init()
一般用来做一些初始化工作, Go允许定义多个init()
,根据init()
重复场景不同,可以分为
init()
init()
init()
init()
要点秘诀:
init()
函数没有参数,也没有返回值。
init()
函数在程序运行时,自动自动被调用执行,不能在代码中主动调用它。
init()函数执行顺序和时机 执行顺序
先看一段执行代码:
package main
import "fmt"
var x int8 = 5
const name = "Vitalik"
func init() {
fmt.Println(x)
}
func main() {
fmt.Println("Eth merge")
}
输出结果:
5
Eth merge
Exiting.
可见就目前三者来讲顺序如下:
全局变量 -> init() -> main()
Go
语言程序启动会先从main
包检查其导入的所有包 ,每个包又可能导入了其他的包,由此Go
编译器由此构建出一个树状的包引用关系,再根据引用顺序决定编译顺序,依次编译这些包的代码。
具体:
1. main引用的同级包,按引用顺序依次编译
2.包中再引用包,最底层的叶子节点的init()先编译,依次往上调用
即,在运行启动时,最后导入的包会最先初始化并调用其init()
函数,
到此这篇关于Go中init()执行顺序分析的文章就介绍到这了,更多相关Go中init()执行顺序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Go中init()执行顺序详解
本文链接: https://www.lsjlt.com/news/121194.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-05
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0