golang defer中的闭包

 1 package main 
 2 
 3 import (
 4     "fmt"
 5 )
 6 func calc(index string, a, b int) int {
 7     ret := a + b
 8     fmt.Println(index, a, b, ret)
 9     return ret
10 }
11 
12 func main() {
13     a := 1
14     b := 2
15     defer calc("1", a, calc("10", a, b))
16     fmt.Println("first")
17     a = 0
18     defer calc("2", a, calc("20", a, b))
19     fmt.Println("second")
20 
21     b = 1
22 }

 

执行结果如下:

10 1 2 3
first
20 0 2 2
second
2 0 2 2
1 1 3 4

 

posted @ 2018-05-23 11:20  小天儿  阅读(299)  评论(0)    收藏  举报