内容简介:在一个go文件中, 初始化顺序规则: (1)引入的包 (2) 当前包中的变量常量 (3) 当前包的init (4)main函数文件结构如下.输出为
-
- 一个程序只能有一个main的package. 且pack main 会包含一个main的函数.
-
- pack main会包含多个其他的pack. 这里我们假设还有pack1, pack3.
-
- pack可能还会包含其他的pack. 这里我们假设 pack1. 还包含了 pack2 .
-
-
所有的 pack 都可以包含0个至多个init函数. 没错. 可以有多个init函数... ...
现在讨论init的调用情况. 结论看起来是
-
-
- 包之间没有关系的情况下 . 按照import的先后顺序执行. 与包函数的调用顺序无关. ~~~ 静态编译
-
- 看起来是深度递归操作. 永远最先执行最后被包含的pack的init函数.
-
- 同一个pack的多个文件中的init函数是按照文件名的 排序 来执行的.
-
- 同一个pack的同一个文件也可以有多个init函数.... (神经病). 文本顺序执行.
在一个 go 文件中, 初始化顺序规则: (1)引入的包 (2) 当前包中的变量常量 (3) 当前包的init (4)main函数
文件结构如下.
.
|-- main.go
|-- pack1
| |-- pack0.go
| |-- pack1.go
| `-- pack11.go
|-- pack2
| `-- pack2.go
`-- pack3
`-- pack3.go
输出为
test pack3 init test pack2 init test pack00 init test pack1 init before test pack1 init after test pack11 init main init main
ps: 包级别的变量也是这么个初始化顺序.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- golang 初始化顺序
- golang init方法和main方法初始化顺序
- Java类 静态代码块、构造代码块、构造函数初始化顺序
- java中具有继承关系的类及其对象初始化顺序
- java入门第二季--继承--java中的继承初始化顺序
- C++ 的一大误区——深入解释直接初始化与复制初始化的区别
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX系统编程: 通信、并发与线程
【美】Kay Robbins、Steve Robbins / 师蓉 / 电子工业出版社 / 2018-5 / 198
《UNIX系统编程: 通信、并发与线程》是一本基于最新UNIX标准的完备的参考书,对UNIX编程的要点进行了清晰易懂的介绍,从一些用于说明如何使用系统调用的短小代码段开始,逐渐过渡到能帮助读者扩展自己技能水平的实际项目中。《UNIX系统编程: 通信、并发与线程》中对通信、并发和线程问题进行了深入探讨,对复杂的概念(如信号和并发)进行了全面且清晰的解释,还覆盖了与文件、信号、信号量、POSIX线程和......一起来看看 《UNIX系统编程: 通信、并发与线程》 这本书的介绍吧!