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…

続きを読む

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

Goのflagパッケージを使ってコマンドライン引数でフラグを扱う 前回ちょっと触れたのでflagパッケージについて書きます。 Goのflagパッケージは[-t 10]のような形式のコマンドラインのフラグを簡単に扱えます。 flagの使用方法 最初にフラグを定義してからパースを実行し、フラグの値を読みます。 flagの定義 扱いたいデータ別にString(),Int(),Bool()な…

続きを読む

最近のトラックバック