Goでos.Exitを呼ぶと同じ関数内のdeferが実行されない。

Go
os.Exit()を呼ぶと同じ関数内のdeferが実行されないという情報を発見。 panicなら納得だけoExitでもdefer実行されない。 deferステートメントは関数がリターンする直前に呼び出されるという仕様から考えれば、そりゃそうなるか。 対処方法はExit呼び出す関数ではdeferせずに、別の関数を呼び出した中でdeferするようにすればいい。 func main() {…

続きを読む

Goのflagパッケージを使ってコマンドライン引数でフラグを扱うの続き

前回の続きでflagパッケージについて書きます。 Usage 間違ったフラグを渡したときなどにUsageが表示されますが、flag.Usageに関数を入れることでカスタマイズできます。 デフォルトだと以下のようになっています。 var Usage = func() { fmt.Fprintf(CommandLine.Output(), "Usage of %s:\n", os.A…

続きを読む

最近のトラックバック