golang中的初始化顺序

栏目: Go · 发布时间: 7年前

内容简介:在一个go文件中, 初始化顺序规则: (1)引入的包 (2) 当前包中的变量常量 (3) 当前包的init (4)main函数文件结构如下.输出为
    1. 一个程序只能有一个main的package. 且pack main 会包含一个main的函数.
    1. pack main会包含多个其他的pack. 这里我们假设还有pack1, pack3.
    1. pack可能还会包含其他的pack. 这里我们假设 pack1. 还包含了 pack2 .
    1. 所有的 pack 都可以包含0个至多个init函数. 没错. 可以有多个init函数... ...

      现在讨论init的调用情况. 结论看起来是

    1. 包之间没有关系的情况下 . 按照import的先后顺序执行. 与包函数的调用顺序无关. ~~~ 静态编译
    1. 看起来是深度递归操作. 永远最先执行最后被包含的pack的init函数.
    1. 同一个pack的多个文件中的init函数是按照文件名的 排序 来执行的.
    1. 同一个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: 包级别的变量也是这么个初始化顺序.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Foundations of PEAR

Foundations of PEAR

Good, Nathan A./ Kent, Allan / Springer-Verlag New York Inc / 2006-11 / $ 50.84

PEAR, the PHP Extension and Application Repository, is a bountiful resource for any PHP developer. Within its confines lie the tools that you need to do your job more quickly and efficiently. You need......一起来看看 《Foundations of PEAR》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码