From 8a5fe7110287a5d84651bb953ddc7123d60e6335 Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Tue, 21 Sep 2021 15:07:18 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20Defer=20=E5=BB=B6=E6=97=B6=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=20=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/function/defer/main.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/base/function/defer/main.go b/base/function/defer/main.go index 024b5f1..42ecf9d 100644 --- a/base/function/defer/main.go +++ b/base/function/defer/main.go @@ -25,10 +25,31 @@ func demo2() (x int) { return 5 } +func demo3(index, a, b int) int { + ret := a + b + fmt.Printf("index: %d, a: %d, b: %d \t ret: %d\n", index, a, b, ret) + return ret +} + func main() { res := demo() fmt.Printf("demo => %T %+v\n", res, res) res = demo2() fmt.Printf("demo => %T %+v\n", res, res) + + fmt.Println("=========================================================") + + // 1. defer demo3(1, a, demo3(4, a, b)) 先运算 里面的 demo3 a:1 b:2 ret:3 => defer demo3(1, 1, 3) + // 2. a = 0 + // 3. defer demo3(2, a, demo3(3, a, b)) 先运算 里面的 demo3 a:0 b:2 ret:2 => defer demo3(2, 0, 2) + // 4. b = 1 + // 5. defer demo3(2, a, demo3(3, a, b)) 此处 参数 demo3 已在第3步计算完毕 故为 defer demo3(2, 0, 2) a:0 b:1 ret:2 + // 6. defer demo3(1, a, demo3(4, a, b)) 此处 参数 demo3 已在第1步计算完毕 故为 defer demo3(1, 1, 3) a:0 b:1 ret:4 + a := 1 + b := 2 + defer demo3(1, a, demo3(4, a, b)) + a = 0 + defer demo3(2, a, demo3(3, a, b)) + b = 1 }