関連記事
GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ
概要
以下、自分用のメモです。忘れないうちにメモメモ。。。
最近、flaggy とかを利用していて、あまりflagパッケージを触らなくなってきているのですが
小さなツールをちゃちゃっとワンタイムで利用するときは、やっぱり使ったりします。
使っていないと忘れてしまいそうなので、ここに自分の備忘録として残しておこうと思います。
今回は、flag.FlagSetについて。
FlagSetは、名前の通り、カスタムなフラグセットを作成することが出来る構造体です。
flagパッケージで、ユニットテストなどでも使いたい場合は FlagSetを利用すると便利です。
サンプル
package flags import ( "flag" "github.com/devlights/gomy/output" ) // Flagset は、flag.Flagsetのサンプルです。 // // 通常、flagパッケージはアプリケーションの引数を扱うものであるが // flag.Flagsetを利用することで、外から引数を指定してパースすることが可能となる。 // ユニットテストと相性が良い。 // // # REFERENCES // - https://pkg.go.dev/flag@go1.22.4#FlagSet func Flagset() error { var ( fs = flag.NewFlagSet("", flag.ExitOnError) intValue = fs.Int("intvalue", 0, "int value") strValue = fs.String("strvalue", "", "string value") ) // Flagsetは自分でParse()を呼ぶ必要がある // アプリケーション引数を渡す場合は os.Args[1:] となる fs.Parse([]string{"-intvalue", "100", "-stvalue", "hello world"}) output.Stdoutl("[intValue]", *intValue) output.Stdoutl("[intValue]", *strValue) return nil /* $ task task: [build] go build . task: [run] ./try-golang -onetime ENTER EXAMPLE NAME: flags_flagset [Name] "flags_flagset" [intValue] 100 [intValue] hello world [Elapsed] 43.41µs */ }
参考情報
Goメモ-428 (flaggyメモ)(01) - いろいろ備忘録日記
Goメモ-429 (flaggyメモ)(02) - いろいろ備忘録日記
Goメモ-430 (flaggyメモ)(03) - いろいろ備忘録日記
Goのおすすめ書籍
過去の記事については、以下のページからご参照下さい。
サンプルコードは、以下の場所で公開しています。