init
I、init的几个特征
initpackage xxxmain
initinit
initinit
initmain
II、例程
2.1 在main函数之前执行init
//test1
package main
import "fmt"
func main() {
fmt.Println("do in main")
}
func init() {
fmt.Println("do in init1")
}
func init() {
fmt.Println("do in init2")
}
运行结果:
initmaininit
2.2 init函数的执行顺序
现在我们init目录下的文件内容如下:
三个go程序代码分别如下所示:
// test.go
package main
import (
"fmt"
_ "./level1"
)
func main() {
fmt.Println("I am in main")
}
// level1.go
package level1
import (
"fmt"
_ "../level2"
)
func init() {
fmt.Println("I am in level1")
}
// level2.go
package level2
import "fmt"
func init() {
fmt.Println("I am in level2")
}
test.go
init
并且这种关系为:
import _ " "
import _ " "import _ " "
【参考】
[1] 《The way to go》