如果defer有参数,则在defer语句的行对其进行评估;以下代码段对此进行了说明,其中defer将显示0:
func printNumber() { i := 0 defer fmt.Println(i) // will print 0 i++ return}如果要将语句或函数的执行推迟到封闭(调用)函数结束之前,可以将匿名函数用作延迟语句。这是一个更新的示例:
func printNumbers() { x := 0 defer func() { fmt.Println(x) }() for i:=0; i < 5; i++ { x++; } return}http://play.golang.org/p/YQGQ_8a0_9



