逛Stackoverflow的时候,发现了一个很有趣的话题:
When is the init() function run?
init()
函数是什么时候执行的,由此,引出了一个问题:Golang在导入包的时候,各个部分的执行顺序是什么。
答案:import --> const --> var --> init()
后面有大佬也给出了一张图,我觉得很经典:
测试代码:
package main
import (
"fmt"
)
const c = 1
var v = func() int {
if c == 1 {
fmt.Println("const")
}
fmt.Println("var")
return 1
}()
func init() {
fmt.Println("init")
}
func main() {
fmt.Println("main")
}