Go:defer
package main
import "fmt"
func main() {
fmt.Println(sum(1,2))
x := 1
y := 2
defer calc("AA", x, calc("A", x, y))
x = 10
defer calc("BB", x, calc("B", x, y))
y = 20
}
func calc(index string, a, b int) int {
ret := a + b
fmt.Println(index, a, b, ret)
return ret
}
结果如下:
3
A 1 2 3
B 10 2 12
BB 10 12 22
AA 1 3 4
defer语句常用语释放资源,但其在使用时,函数的参数已经确定,在本题中,首先执行倒数第一个defer语句:
defer calc(“BB”, 10, calc(“B”, 10, 2))
然后执行倒数第二个defer语句:
defer calc(“AA”, 1, calc(“A”, 1, 2))