Golang defer关键字
在Go语言中,defer语句将函数或方法或匿名方法的执行defer到附近的函数返回。换句话说,defer函数或方法的调用参数会立即评估,但在附近的函数返回之前,它们不会执行。你可以通过使用 defer 关键字来创建一个defer的方法、或函数、或匿名函数。
语法
重要的一点
- 在Go语言中,同一程序中允许有多个defer语句,它们以LIFO(Last-In, First-Out)顺序执行,如例2所示。
- 在defer语句中,参数在defer语句执行时被评估,而不是在它被调用时被评估。
- defer语句一般用于确保文件在其需要结束时被关闭,或关闭通道,或捕捉程序中的恐慌。
让我们借助于一个例子来讨论这个概念。
例1 :
输出
解释: 在上述例子中,我们有两个名为mul()和show()的函数。show()函数在main()函数中被正常调用,而mul() 函数则以两种不同方式被调用。
- 首先,我们正常调用mul函数(没有defer关键字),即mul(23, 45),当函数被调用时它会执行(输出:结果:1035)。
- 第二,我们使用defer关键字将mul()函数作为defer函数调用,即defer mul(23, 56) ,当周围的方法都返回时,它就会执行(输出:结果:1288)。
例2 :
输出