golang-9- defer

1、defer 语句会延迟函数的执行直到上层函数返回。延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用。


2、延迟的函数调用被压入一个栈中。当函数返回时, 会按照后进先出的顺序调用被延迟的函数调用。

<code>import "fmt"func main() {fmt.Println("counting")for i := 0; i < 10; i++ {defer fmt.Println(i)}fmt.Println("done")}/<code>

3、defer后面必须是函数调用语句,不能是其他语句,否则编译器会出错



4、defer用途:

<code>1. 关闭文件句柄2. 锁资源释放3. 数据库连接释放/<code>