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("我第二个被注册,但是先被打印")
}

相关内容

热门资讯

美联储理事称美关税政策将成推高... 美国联邦储备委员会理事克里斯·沃勒2日表示,关税政策将成为推高美国通胀的主要因素,其对通胀的影响可能...
拾荒老人捡烟花残骸被炸伤,右眼... 极目新闻记者 舒隆焕 5月31日,河南平顶山鲁山县一名70多岁的王姓老人捡拾烟花残骸时,被复燃的烟花...
科大讯飞申请一种法律咨询回复方... 金融界2025年6月2日消息,国家知识产权局信息显示,科大讯飞股份有限公司申请一项名为“一种法律咨询...
原创 央... 前言 在伊沙和解之后,或许中东将迎来另一个和解的契机,而这个地方,很可能是也门。最近几天,胡塞武装再...
"这不是贸易政策,这... ► 文 观察者网 张菁娟 美国总统特朗普上周再祭出“关税大棒”,宣布将钢铝关税翻倍至50%,引发多方...
十日谈·法治护航一带一路 | ... 我的法律职业生涯开始于2010年,那一年,我进入一家外国律所实习。在第一个七年里,我参与了许多跨境投...
瀚蓝环境将于6月27日召开股东... 金融界6月2日消息,瀚蓝环境发布公告,将于2025年6月27日召开第1次临时股东大会,网络投票同日进...
资讯┃蓝天彬律师参加瀛和刑辩论... 滥用管辖权链接点进行违法管辖,跨地区抓捕民营企业家以及员工,是当前民营经济保护的焦点问题和痛点问题。...
原创 国... 国际调解院公约的签署仪式于最近在充满活力的香港举行。国际调解院的总部设立在这座国际大都会,参与到这一...
英国商界人士:美国关税政策成为... 新华社伦敦6月2日电(记者郑博非)英国一些商界人士近日在全球英国2025年贸易展会上接受新华社记者采...