golang中的初始化顺序

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

内容简介:在一个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: 包级别的变量也是这么个初始化顺序.


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

查看所有标签

猜你喜欢:

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

大数据大创新:阿里巴巴云上数据中台之道

大数据大创新:阿里巴巴云上数据中台之道

邓中华 / 电子工业出版社 / 2018-11 / 99

阿里巴巴云上数据中台正服务着阿里生态中的数十个业务板块、百余家公司、千万级客户,在帮助决策层看清甚至决定业态走向的同时,在上万个业务场景中应用并催生创新。 《大数据大创新:阿里巴巴云上数据中台之道》基于作者在阿里巴巴的十年大数据从业经历,精彩演绎云上数据中台之道。《大数据大创新:阿里巴巴云上数据中台之道》基于大数据探索的大趋势,讲述阿里巴巴云上数据中台顶层设计,再以实际案例详述阿里巴巴云上数......一起来看看 《大数据大创新:阿里巴巴云上数据中台之道》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试