-
- 首先是import pkg的初始化过程
-
- pkg中定义的const变量初始化
-
- pkg中定义的var全局变量
-
- pkg中定义的init函数,可能有多个
From: [Programming in Go]
在 pkg 内,pkg level的 var 变量按照声明的顺序进行声明,但是要在依赖初始化变量的后面。
初始化的顺序: d, b, c, a
var (
a = c + b
b = f()
c = f()
d = 3
)
func f() int {
d++
return d
}
Ref Program_initialization_and_execution
有时候运行 go test我们期望能够在测试前进行 setup 操作,而在测试完成后执行 teardown 操作,但是由于 go test 运行的不确定性,因此 go test 框架提供了一个 Main 函数实现这一机制。
func TestMain(m *testing.M) {
// call flag.Parse() here if TestMain uses flags
os.Exit(m.Run())
}