Go程序的执行流程说明

package main

func main() {}

/************************************************** 流程图·开始 **************************************************

     ┌────────┐
     │                │
  →→→→→ main      │    ┌────────┐
     │       ↓       │    │                │
     │  import pkg1 →→→→→→→ pkg1       │    ┌────────┐
     │                │    │       ↓       │    │                │
     │     const... ←←←  │  import pkg2 →→→→→→→ pkg2       │    ┌────────┐
     │       ↓       │ ↑ │                │    │       ↓       │    │                │
     │     var...     │ ↑ │    const... ←←←   │  import pkg3 →→→→→→→ pkg3       │
     │       ↓       │ ↑ │       ↓       │ ↑ │                │    │       ↓       │
     │     init()     │ ↑ │     var...     │ ↑ │    const... ←←←   │    const...    │
     │       ↓       │ ↑ │       ↓       │ ↑ │       ↓       │ ↑ │       ↓       │
     │     main()     │  ←←←← init()     │ ↑ │     var...     │ ↑ │     var...     │
     │       ↓       │    │                │ ↑ │       ↓       │ ↑ │       ↓       │
     └─── ↓ ───┘    └────────┘  ←←←← init()     │  ←←←← init()     │
              ↓                                     │                │    │                │
             exit                                    └────────┘    └────────┘

************************************************** 流程图·开始结束 **************************************************/

// ========== 总结 ========== //
// Go程序的执行流程是以main包为入口,依次执行如下操作:
//   ① 导入包(import)
//   ② 定义常量(const)
//   ③ 定义变量(var)
//   ④ 执行init()函数
//   ⑤ 执行main()函数
// 如果包又导入了其它包,则会先进入被导入包执行上述操作,可结合上面的流程图理解。

Copyright © 2024 码农人生. All Rights Reserved