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>
閱讀更多 講故事的福魔康 的文章