定义
Golang中的特殊函数,会先于main函数执行且不能被调用。该函数无入参、返回值,同时支持选择性定义。也可以选择定义多个init函数,但建议只定义一个。
1 | package main |
sync.Once
init函数实现了sync.Once锁,只会被执行一次。
- my/my.go
1 | package my |
- main.go
1 | package main |
初始化顺序
在package内部变量赋值 > init() > main()。
1 | package main |
多个package调用时的初始化顺序,则取决于依赖顺序。
- my.go
1 | package my |
- your.go
1 | package your |
- main.go
1 | package main |
疑问
当package内定义多个init函数,它的执行顺序?