lock(l);defer unlock(l); // unlocking happens before surrounding function returns// prints 3 2 1 0 before surrounding function returnsfor i := 0; i 更新:% @; s0 V( j2 q' o1 R/ ?! s# d s+ h
defer现在也处理惯用的方法panic例外样:[code]package mainimport "fmt"func main() f() fmt.Println("Returned normally from f.")}func f() defer func() if r := recover(); r != nil fmt.Println("Recovered in f",r) } }() fmt.Println("Calling g.") g(0) fmt.Println("Returned normally from g.")}func g(i int) { if i > 3 { fmt.Println("anicking!") panic(fmt.Sprintf("%v",i)) } defer fmt.Println("Defer in g",i) fmt.Println("rinting in g",i) g(i 1)} : X, D9 b) Z6 Y4 U1 h