GO语言小锤硬磕十二、init函数和defer延迟调用关键词
创始人
2025-06-01 05:58:57
0

golang里面有两个保留函数

        main 函数(只能应用于package main)

        init 函数(能够应用于所有的package)

go程序会自动调用 init()和main() 所以你不能在任何地方调用这两个函数

package main 必须包含一个main 函数,但是每个package中的init函数都是可选的

一个package 里可以写多个init函数,建议每个包中只写一个init函数

单个包中代码执行顺序如下

        main包 --> 常量 -->全局变量 --> init函数 --> main函数 -->exit

多个包之间的代码执行顺序

        先按层级import 包,从最后引入包中加载常量、变量、init(),返回上级包 继续执行 加载常量、变量、init()

defer关键字,延迟调用

go语言中没有其他面向对象的析构函数,但是go语言提供了defer语句用于实现其他面向对象语言的析构函数

defer常用于释放资源、接触锁定以及错误处理等

无论在函数内什么地方注册defer 语句,他都会在所属函数执行完毕后才会执行,并且如果注册了多个的defer语句,他们会按照后进先出(先进后出)得原则执行,所以一些资源我们开后就可以注册defer语句关闭。

package main
import "fmt"
func main(){defer fmt.Println("我是第一个被注册,最后被打印,因为defer先进后出")fmt.Print("我先被打印")defer fmt.Println("我第二个被注册,但是先被打印")
}

相关内容

热门资讯

嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...
家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...