从悬空引脚到复用设计:LPDDR3地址线BA0-BA3的工程逻辑探秘
2026/5/16 17:20:17
Go程序的执行顺序遵循特定的初始化规则,理解这些规则有助于编写结构清晰的代码。以下是Go程序执行顺序的详细说明:
main.main函数是所有Go可执行程序的用户层入口,其特点如下:
main包中,否则编译器报错packagemainfuncmain(){// 用户逻辑代码}init函数用于包初始化,具有以下特性:
init函数main函数funcinit(){// 初始化逻辑}Go程序的初始化遵循深度优先原则:
常量初始化
所有包的常量最先被初始化
变量初始化
接着初始化包级变量
init函数执行
最后按声明顺序执行init函数
当存在包依赖时,初始化顺序为:
main包开始,按导入顺序处理依赖包main包本身示例依赖关系:
main → pkg1 → pkg3 main → pkg2 → pkg3实际执行顺序:
pkg3 → pkg1 → pkg2 → main通过以下代码结构验证初始化顺序:
prog-init-order/ ├── main.go ├── pkg1/ ├── pkg2/ └── pkg3/典型输出结果:
pkg3: const initialized pkg3: var initialized pkg3: init executed pkg1: const initialized pkg1: var initialized pkg1: init executed pkg2: const initialized pkg2: var initialized pkg2: init executed main: const initialized main: var initialized main: init executedinit按声明顺序执行理解这些执行顺序规则,可以更有效地组织和调试Go程序代码。