Defer

发布于:2023-05-29 ⋅ 阅读:(335) ⋅ 点赞:(0)

defer 简介

defer 通俗来讲就是延迟调用。defer 会在当前函数返回之前执行 defer 注册的函数。
例如: defer func_x() 这样语句会让你注册一个函数变量到 defer 的全局链表中,在 defer 语句所在的函数退出之前调用。

主要使用场景

panic 场景:这个是重要的一个特性,通常能简化我们的代码,确保无论任何场景,defer 的函数一定调用,通常用在锁或者资源的释放场景较多;
配套的两个行为代码可以放在最近的位置:创建&释放、加锁&放锁、前置&后置,使得代码更易读,编程体验优秀。最近的地方是哪里?下一行

延迟调用

package main

func main() {
    defer println("--- defer ---")
    println("--- end ---")
}

defer 会在main函数之前调用。
核心要点:

**延迟调用**:defer 语句本身虽然是 main 的第一行,但是 fmt.Println 是先打印的;
**defer 关键字一定是处于函数上下文**:defer 必须放在函数内部


网站公告

今日签到

点亮在社区的每一天
去签到