Goにはいくつかプログラムを終了させる手段が存在する。 プログラムを終了させるときにどれを選べばいいか調べてみた。結論から言うとmain関数内でdeferを使わずos.Exit関数を呼ぶ。 TL;DR Goで意図的にプログラムを終了させることができる処理は次のとおり https://golang.org/pkg/os/#Exit https://golang.org/pkg/builtin/#panic https://golang.org/pkg/runtime/#Goexit main関数内でdeferを使わずos.Exit関数を呼ぶのが一番良いと思う panic関数は終了コードを明示的に決めることができない 一方ですべてのゴルーチンを停止してくれるらしい runtime#Goexit関数をmain関数で呼ぶのは行儀が悪そう Calling Goexit from the main g