函式介紹
特點
- 無需宣告原型
- 支援不定變參
- 支援多返回值
- 支援命名返回引數
- 支援匿名函式和必報
- 函式也是一種型別,一個函式可以賦值給變數
- 不支援巢狀一個包不能有兩個名字一樣的函式
- 不支援過載
- 不支援預設引數
示例
閉包的作用域
func test() func() {
i := 0
return func() {
i ++
fmt.Println(i)
}
}
defer函式
func def() {
}
pinic 函式(丟擲異常)和recover函式(捕獲異常)
func pa() {
defer func() {
fmt.Println("捕獲到異常",recover())
}()
panic("這是異常")
}
封裝try catch 及異常捕獲
try(func() {
fmt.Println("正常執行方法")
panic("我執行錯誤了")
}, func(err interface{}) {
fmt.Println("當前方法執行錯誤:,錯誤資訊為:",err)
})
func try(fun func(),catch func(err interface{})) {
defer func() {
if err := recover(); err != nil{
catch(err)
}
}()
fun()
}
返回型捕獲異常寫法
_,err := sumerr()
if err != nil {
fmt.Println("加運算方法執行出錯了,錯誤資訊為:",err)
}
func sumerr() (int, error) {
return 9,errors.New("方法sumerr 執行錯誤,除數不能為0")
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結