panicとrecoverによるHello world
Go「プログラミング言語Go」の練習問題5.19「return文を含んでいないのに、ゼロ値ではない値を返す関数をpanic
とrecover
を使って書きなさい」の解答として、panic
とrecover
を使った Hello worldプログラムを作りました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Exercise 5.19 (p.175) // $ go run main.go package main import ( "fmt" ) func main() { fmt.Println(panicrecover()) } func panicrecover() (err error) { defer func() { if p := recover(); p != nil { // recover() は interface{} を返すので、型アサーションを使う err = fmt.Errorf(p.(string)) } }() panic("hello, world") // cf. The C Programming Language } |
参考文献
- 「プログラミング言語Go」 Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 「プログラミング言語C 第2版 ANSI規格準拠」 B.W. カーニハン (著), D.M. リッチー (著), 石田 晴久 (翻訳)