組み込み関数 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 が呼ばれている。