1. 引言
init()
init()
2. init 函数的特点
2.1 自动执行
init()init()init()
init()main()init()main()init()
当我们运行这段代码时,输出结果如下:
Init function executed
Main function executed
init()main()init()
2.2 在包级别变量初始化后执行
init()
init()main()
Init function executed
Var1: Variable 1
Var2: Variable 2
Main function executed
init()init()init()init()
2.3 执行顺序不确定
init()init()init()
init()init()
init()
First init function
Second init function
Main function executed
init()init()
init()init()
init()init()
3. init 函数的用途
3.1 初始化全局变量
init()
init()
Configinit()
Configinit()loadConfig()loadConfig()map
init()ConfigConfig
init()
3.2 执行一些必要的验证操作
init()init()
init()loadConfig()validateConfig()
os.Exit()
init()
4. init 函数的注意事项
4.1 init 函数不能被显式调用
init()
init()main()main()init()init()
init()undefined: init
4.2 init 函数只执行一次
init()init()
init()init()
utilcounterinit()counter
package1package2util
main.gopackage1package2
运行上述程序,我们可以得到以下输出:
init() function in util package executed. Counter: 1
init() function in package1 executed. Counter: 1
init() function in package2 executed. Counter: 1
Main function
utilinit()package1package2init()init()
4.3 避免在 init 函数中执行耗时操作
init()init()init()
init()time.Sleep()main()init()main()init()
init()main()
init()
5. 总结
init()
init()initinit()init()init
init()