Go語言-defer的使用
阿新 • • 發佈:2018-06-15
return println 結果 nil 出現異常 ror () 使用 package defer
不管程序是否出現異常,均在函數退出時候,自動執行相關代碼
實戰
實例1
package main import ( "fmt" ) func main() { defer func() { fmt.Println("main defer") }() if err := test0(); err != nil { fmt.Println(err.Error()) return } if err := test1(); err != nil { fmt.Println(err.Error()) return } } func test0() error { return nil } func test1() error { return nil }
運行結果
main defer
實例2
package main import ( "fmt" "errors" ) func main() { defer func() { fmt.Println("main defer") }() if err := test0(); err != nil { fmt.Println(err.Error()) return } if err := test1(); err != nil { fmt.Println(err.Error()) return } } func test0() error { return errors.New("test0 error") } func test1() error { return nil }
運行結果
test0 error
main defer
實例3
package main import ( "fmt" "errors" ) func main() { defer func() { fmt.Println("main defer") }() if err := test0(); err != nil { fmt.Println(err.Error()) return } if err := test1(); err != nil { fmt.Println(err.Error()) return } } func test0() error { return nil } func test1() error { return errors.New("test1 error") }
運行結果
test1 error
main defer
實例4
package main
import (
"fmt"
"errors"
)
func main() {
defer func() {
fmt.Println("main defer0")
}()
defer func() {
fmt.Println("main defer1")
}()
if err := test0(); err != nil {
fmt.Println(err.Error())
return
}
if err := test1(); err != nil {
fmt.Println(err.Error())
return
}
}
func test0() error {
defer func() {
fmt.Println("test0 defer")
}()
return nil
}
func test1() error {
defer func() {
fmt.Println("test1 defer")
}()
return errors.New("test1 error")
}
運行結果
test0 defer
test1 defer
test1 error
main defer1
main defer0
Go語言-defer的使用