七叶笔记 » golang编程 » golang基础之程序初始化顺序

golang基础之程序初始化顺序

一、包的执行顺序

1.包中的全局常量以及 全局变量 的初始化顺序要先于init()函数,被导入包的init函数的执行顺序要早于main.main()函数.

2.相同包下面的不同 go 文件,按照文件名“从小到大”排序顺序执行

3.非main包只有在被main包导入时才会进行初始化,并且按照 import 的先后顺序执行

4.被递归 import 的包的初始化顺序与 import 顺序相反,例如:导入顺序 main –> A –> B –> C,则初始化顺序为 C –> B –> A –> main

5.一个包如果被其它多个包导入的话,其初始化过程只有一次

6.要避免循环导入包,否则会造成 死锁

golang程序执行顺序

二、同文件中常量、变量、init和main函数执行顺序

在同一个文件中,初始化顺序为常量->变量->init方法->main方法。

相关文章