Go: 包加载

涉及到Go程序的启动/加载过程。

执行main.main()之前,Go引导程序会先对整个程序的包进行初始化。

整个执行流程大致为:

Go包的初始化特点:

  • 包初始化程序从main()引用的包开始,逐级查找包的引用,直到找到没有引用其他包的包,最终生成一个包引用的有向无环图。
  • Go编译器会将有向无环图转换为一颗树,然后从树的叶子节点开始逐层向上对包进行初始化。
  • 单个包的初始化流程如上图所示,先初始化常量、然后是全局变量、最后才是执行包的init()【如果写了init()】
发布了307 篇原创文章 · 获赞 45 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_39969226/article/details/104258961