package中init方法的执行顺序问题
【package中init方法的执行顺序问题】(1)对同一个 go 文件的 init( ) 调用顺序是从上到下的
(2)对同一个 package 中的不同文件,将文件名按字符串进行“从小到大”排序(数字排在前面),之后顺序调用各文件中的init()函数
(3)对于不同的 package,如果不相互依赖的话,按照 main 包中 import 的顺序调用其包中的 init() 函数
(4)如果 package 存在依赖,调用顺序为最后被依赖的最先被初始化,例如:导入顺序 main –> A –> B –> C,则初始化顺序为 C –> B –> A –> main,一次执行对应的 init 方法。
first.gopackage multiple_init_funcsimport "fmt"func init(){
fmt.Println("first init in multiple_init_funcs/first.go")
}func init(){
fmt.Println("second init in multiple_init_funcs/first.go")
}second.go
package multiple_init_funcsimport "fmt"func init(){
fmt.Println("first init in multiple_init_funcs/second.go")
}
func init(){
fmt.Println("second init in multiple_init_funcs/second.go")
}func Hello(){
fmt.Println("Hello")
}main_test.gopackage multiple_init_funcsimport (
"fmt"
"testing"
)func TestMultipleInitFunctions(t *testing.T){
fmt.Println("in main_test.go")t.Logf("pass")/*输出结果:
first init in multiple_init_funcs/first.go
second init in multiple_init_funcs/first.go
first init in multiple_init_funcs/second.go
second init in multiple_init_funcs/second.go*/
}
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理