Pysolate Spine中文旁白 + HTML 图解全部小课 ↗

知识小点 · 解开一个疑问

Go defer:先登记,返回前倒着执行

用同一个函数看清 defer 调用的参数求值、登记顺序和返回前的逆序执行。

01 / 05

先把同一个函数看完整

只追踪一个函数里的 defer

准备播放
DEFER ORDER / 同一个函数先看同一个函数
当前步骤
当前动作先建立执行顺序x = 1 → 2
CODE完整函数片段
先看执行顺序
查看函数体关键行会高亮

            
            func demo() {
          
            
                x := 1
          
            
                defer fmt.Println("A", x)
          
            
                x = 2
          
            
                defer fmt.Println("B", x)
          
            
                fmt.Println("body", x)
          
            
                return
          
            
            }
          

图中省略 package main 和 import fmt;补上它们即可运行。

REGISTER STACK登记栈
顶部先执行

    还没有登记

    OUTPUT程序输出
    发生顺序

      还没有输出

      先登记,再等函数返回前执行。

      0.0 s0%
      旁白

      点一下播放即可。也可以只听声音,或拖动进度跳到想看的位置。

      0:001:20

      正在准备本课音轨与图解。首次播放需要点一下。

      跳到某一节 / 查看讲稿