関連記事
Goメモ-454 (flagパッケージ再入門)(01-FlagSet) - いろいろ備忘録日記
Goメモ-455 (flagパッケージ再入門)(02-Var) - いろいろ備忘録日記
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
最近、flaggy とかを利用していて、あまりflagパッケージを触らなくなってきているのですが
小さなツールをちゃちゃっとワンタイムで利用するときは、やっぱり使ったりします。
使っていないと忘れてしまいそうなので、ここに自分の備忘録として残しておこうと思います。
今回は、flag.Duration()について。
flagパッケージの関数は、flag.Duration()のように受け皿を戻り値で返してくれる関数とflag.DurationVar() のように予め自前で用意している変数を利用する2パターンの使い方がある。
time.Durationに指定するのと同じ値が使えるので便利ですね。(2sとか)
サンプル
package flags import ( "flag" "time" "github.com/devlights/gomy/output" ) // Duration は、flag.Duration(), flag.DurationVar() のサンプルです。 // // flagパッケージの関数は、flag.Duration()のように受け皿を戻り値で返してくれる関数と // flag.DurationVar() のように予め自前で用意している変数を利用する2パターンの使い方がある。 // // # REFERENCES // - https://pkg.go.dev/flag@go1.22.4#Duration // - https://pkg.go.dev/flag@go1.22.4#DurationVar func Duration() error { var ( fs = flag.NewFlagSet("", flag.ExitOnError) d1 *time.Duration d2 time.Duration ) d1 = fs.Duration("d1", time.Duration(0), "duration value 1") fs.DurationVar(&d2, "d2", 1*time.Minute, "duration value 2") fs.Parse([]string{"-d1", "3s", "-d2", "1h2m3s"}) output.Stdoutl("[d1]", *d1, (*d1).Milliseconds()) output.Stdoutl("[d2]", d2, d2.Seconds()) return nil /* $ task task: [build] go build . task: [run] ./try-golang -onetime ENTER EXAMPLE NAME: flags_duration [Name] "flags_duration" [d1] 3s 3000 [d2] 1h2m3s 3723 [Elapsed] 43.55µs */ }
参考情報
Goメモ-428 (flaggyメモ)(01) - いろいろ備忘録日記
Goメモ-429 (flaggyメモ)(02) - いろいろ備忘録日記
Goメモ-430 (flaggyメモ)(03) - いろいろ備忘録日記
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。