下午时候,群友发了一个关于init的介绍。然后我随口一说,“包级别变量和init()哪个先初始化”。
求证过程:
package main
import "fmt"
func init() {
fmt.Println(1)
}
var global = func() int {
fmt.Println(2)
return 2
}()
func main() {
}
结果是:
2
1
也就是说包级别的变量会早于init初始化。
又有群友随手抛出了一个图片,介绍了整个包级别常量、变量、init函数的初始化顺序。
图片中给出了import -> const -> var -> init() -> main()
初始化链路