defer的特點就是先入後出,所以在執行完正常語句後,在倒序執行defer
package main結果展示:import (
"fmt"
"./feibo"
"os"
"bufio")//
閉包的使用
,閉包分為自由變數和區域性變數,對於
sum來說就是自由變數
,他不在
return
的函式體中
,v是區域性變數
func
adder() func(int) (int
, int
, int)
}func
wirte(name
string) bool
//最後關閉
defer
file
.close()
//寫入記憶體
//newwriter
相當於newwritersize(wr, 4096) newwritersize
將wr
封裝成乙個擁有
size
大小快取的
bufio.writer
物件writ
:= bufio.newwriter(file
) //
稍後寫入檔案
//將快取中的資料提交到底層的
io.writer
中defer
writ
.flush()
a := feibo.fbnj()
for
i := 0;
i <
10;
i++
return true
}func
fff()
defer fmt.println(i
) }
}func
main()
//呼叫外部的函式
j := feibo.feibo()
fmt.println(j())
fmt.println(j())
fmt.println(j())
fmt.println(j())
fmt.println(j())
fmt.println(j())
fmt.println(j())
//defer
的用法,
當defer
語句被執行時,跟在
defer
後面的函式會被延遲執行。它們的執行順序與宣告順序相反。
//輸出的結果是
333 222 111
fmt.println("defer
的用法")
fmt.println(333)
defer fmt.println(111)
defer fmt.println(222)
//寫入斐波納吉數列到檔案
wirte("222.txt")
//迴圈輸出
,並加入
defer
fmt.println("
以下是for
的defer
的用法")
fff()
}
go的錯誤處理
錯誤需要開發者主動捕獲,同時只能獲取是什麼錯誤,無法獲悉呼叫棧 確定具體哪一行,也就是不知道那行出了錯誤 err func if err niltype myerr struct func myerr myerr error errorerrors.withmessage err,bar faile...
go中的錯誤處理
目前go中的錯誤處理機制比較簡單。往往是通過乙個error例項來傳達錯誤資訊。go內建乙個error介面來預設處理錯誤 type error inte ce func main i,error sometype.method 110 if error nil fmt.printf the value...
go中的錯誤處理
錯誤處理 有兩種方式可以生成自己的異常返回,fmt.errorf errors.new go中的error的定義如下。type error inte ce 也就是說我們可以自己定義的結構體,通過實現這個介面就可以了。比如 type myerror struct func me myerror err...