go语言defer的使用

Go语言的defer(延迟执行)语句,是在函数结束前执行,而如果在函数中有多个defer语句时,会像一个堆栈一样,先进后出,后进先出。defer语句在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题上很试用。

举个defer语句简单的使用如下:

package main

import "fmt"
func funca()  {
   fmt.Println("test funca")
}
func funcb()  {
   fmt.Println("test funcb")
}
//当funcc执行完,也就是输出test funcc时,才会去调用funca和funcb,而且是先调用funcb
 func funcc()  {
   defer funca()
   defer funcb()
   fmt.Println("test funcc")
   //return
}
func main() {
   funcc()
   //因为defer是在main函数中的,所以要等main函数结束前才执行。
   for i:=0;i<6;i++{
      defer fmt.Println(i)
   }
   fmt.Println("test main func")
}
所以最终输出的结果是
 test funcc
test funcb
test funca
test main func
5
4
3
2
1
0

猜你喜欢

转载自blog.csdn.net/u013042928/article/details/79127456