万丈高楼平地起-defer关键字
- defer 定义的函数是在 函数逻辑执行完了之后才执行的.defer语句的作用是不管程序是否出现异常,均在函数退出时自动执行相关代码。 所以,defer后面的函数通常又叫做延迟函数。 它会经常被用于关闭文件描述符、关闭数据库连接以及解锁资源
- 定义defer类似于入栈操作,执行defer类似于出栈操作,先进后出。
- 看下面代码
package main import "fmt" func derfer1() { fmt.Println("derfer 1 被执行了.....") } func derfer2() { fmt.Println("derfer 2 被执行了.....") } func derfer3() { fmt.Println("derfer 3 被执行了.....") } func main() { defer derfer1() defer derfer2() defer derfer3() }
- 执行结果、先进后出符合预期
- 在dotnet 里using 块和defer作用类似。