2012年10月23日 星期二

[Go筆記] defer

Go沒有exception handling這樣的設計, 所以沒有像java裡的try{} catch{} finally{...}這種東西, 在java裡, 我們會用

try { 
     .....
} finally {  
    in.close();
}
在finally區塊內去做一些善後的工作, 以確保這些善後工作可以在程式執行後不管有沒錯誤發生都可以被執行到, 在Go中, 用的則是defer:


defer後面接的可以是一個closure, 這些closure會在函式執行結束後(return 之後)緊接著被執行, 所以這段程式執行的結果會是這樣:

6
b
e
c
nn
a
--------
1
b
e
a