Go语言中init函数的作用是什么

本篇文章为大家展示了Go语言中init函数的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联是一家集网站建设,宜丰企业网站建设,宜丰品牌网站建设,网站定制,宜丰网站建设报价,网络营销,网络优化,宜丰网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

Go语言有一个特殊的函数init,先于main函数执行,实现包级别的一些初始化操作。

对于init 函数来说:每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会安排在 main 函数之前执行。init 函数用在设置包、初始化变量或其他要在程序运行前优先完成的引导工作。

init函数的主要作用:1)初始化不能采用初始化表达式初始化的变量。2)程序运行前的注册。3)实现sync.Once功能。(备注:init函数没有输入参数、返回值。)

1.单个包中的init函数执行顺序

在Go语言中,执行顺序为:初始化变量--》init函数--》main函数

Go语言中init函数的作用是什么

结果分析:通过输出结果,我们可以看到,Go语言的程序,在开始运行之前,首先执行的是变量初始化操作,然后是init()函数,最后是main()函数。

2.单个包中有多个init函数的话,它们的执行顺序是不确定的

Go语言中,一个包文件和一个.go文件中可以实现多个init()函数,也不会编译出错。

Go语言中init函数的作用是什么

Go语言中init函数的作用是什么

结果分析:通过输出结果,我们能够看出同一个包中的init函数是可以实现多个的,理论上他们的执行顺序可以不同,但是笔者执行了5次都是上面的结果,不知道是不是编译顺序的原因。

3. 相互依赖的包之间的init函数,按照递归的顺序执行

如题,如下图所示:

Go语言中init函数的作用是什么

(转载:https://blog.csdn.net/benben_2015/article/details/79486077)

例子如下所示:

Go语言中init函数的作用是什么

Go语言中init函数的作用是什么

结果分析:包的依赖关系 main->b->a, 所以输出结果的init函数执行顺序是,先执行a中的,再执行b中的,最后执行c中的。

4. 补充知识:

Go要求非常严格,不允许引用不使用的包,不过我们可以采用下面的格式(import _ pkg)来引用,只是用它来执行对应包的init函数。

将上面c.go中的import "./b" 替换成import _ "./b", 并将main()中的b.B()删除,执行结果如下所示。

Go语言中init函数的作用是什么

上述内容就是Go语言中init函数的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。

分享名称:Go语言中init函数的作用是什么
网页链接:https://www.cdcxhl.com/article36/iigspg.html

成都网站建设公司_创新互联,为您提供虚拟主机网站营销小程序开发移动网站建设响应式网站网页设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作