恐慌

緊急停止正常執行流程並退出當前功能。然後,在將控制傳遞給堆疊上的下一個更高功能之前,將執行任何延遲呼叫。每個堆疊的函式將退出並執行延遲呼叫,直到使用延遲 recover() 處理恐慌,或直到恐慌到達 main() 並終止程式。如果發生這種情況,提供給恐慌的引數和堆疊跟蹤將列印到 stderr

package main

import "fmt"

func foo() {
    defer fmt.Println("Exiting foo")
    panic("bar")
}

func main() {
    defer fmt.Println("Exiting main")
    foo()
}

輸出:

Exiting foo
Exiting main
panic: bar

goroutine 1 [running]:
panic(0x128360, 0x1040a130)
    /usr/local/go/src/runtime/panic.go:481 +0x700
main.foo()
    /tmp/sandbox550159908/main.go:7 +0x160
main.main()
    /tmp/sandbox550159908/main.go:12 +0x120

重要的是要注意 panic 將接受任何型別作為其引數。