panic

組み込み関数 panic は、エラーメッセージを表示して、プログラムを中断する。何か致命的なエラーが起こった場合に使用する。
簡単な例を示そう。関数 fact は 0 以上の整数に値を返し、それ以外の場合には panic を呼ぶ。

package main

import "fmt"

func fact(n int) (int, error) {
    if n < 0 { panic("fact : domain error") } a := 1 for ; n > 1; n-- {
        a *= n
    }
    return a, nil
}

func main() {
    for x := 10; x >= -1; x-- {
        v, err := fact(x)
        if err != nil {
            fmt.Println(err)
        } else {
            fmt.Println(v)
        }
    }
}

実行例。

^o^ > go run panic.go
3628800
362880
40320
5040
720
120
24
6
2
1
1
panic: fact : domain error

goroutine 1 [running]:
main.fact(0xffffffffffffffff, 0x1, 0x1, 0x2)
        C:/Users/takatoh/Documents/w/learning-go/panic.go:7 +0xb8
main.main()
        C:/Users/takatoh/Documents/w/learning-go/panic.go:18 +0x43
exit status 2

for ループの最後で fact-1 を与えているので panic が呼ばれている。