总结一下init方法的定义和执行顺序,做个笔记
- 在同一个go文件中,可以定义多个init方法
- 在同一个文件中的多个init方法,按照在代码中编写的顺序依次执行不同的init方法
- 在同一个package中,可以多个文件中定义init方法
- 在同一个package中,不同文件中的init方法的执行
按照文件名先后
执行各个文件中的init方法
// A/a1.go
package A
func init() {
println("a1")
}
var A1 = ""
// A/a2.go
package A
func init() {
println("a2")
}
var A2 = ""
// B/b1.go
package B
func init() {
println("b1")
}
var B1 = ""
// B/b2.go
package B
import "A"
func init() {
println("b2")
}
func f() {
_ = A.A2
}
var B2 = ""
// main.go
package main
import "B"
func main() {
_ = B.B2
}
执行结果:
a1
a2
b1
b2
有疑问加站长微信联系(非本文作者)