Golangのflagパッケージ
基本的な使い方
パッケージをインポート
import "flag"
フラグの値を格納する変数を定義
flag.String(), Bool(), Int() などを使用してフラグを定義。 フラグを格納するための変数にポインタを返す。
flag.XXXX( <パラメータ名>, <デフォルト値>, <パラメータの説明>)
boolPtr := flag.Bool("b", false, "真偽値の値の例")
intPtr := flag.Int("i", 0, "数値の場合の例")
strPtr := flag.String("s", "", "文字列の場合の例")
フラグの解析と取得
flag.Parse()を呼ぶことでコマンドラインの引数のフラグが解析され、フラグが変数にバインドされる。
flag.Parse()
フラグの解析と取得
実際のオプション値を取得するために、*変数名
のようにポインタをデリファレンスする必要がある点に気をつけてください。
fmt.Println(*boolPtr)
fmt.Println(*intPtr)
fmt.Println(*strPtr)
全体のソースコード
package main
import (
"flag"
"fmt"
)
func main() {
boolPtr := flag.Bool("b", false, "真偽値の値の例")
intPtr := flag.Int("i", 0, "数値の場合の例")
strPtr := flag.String("s", "", "文字列の場合の例")
flag.Parse()
fmt.Println(*boolPtr)
fmt.Println(*intPtr)
fmt.Println(*strPtr)
}
ヘルプを表示する
<コマンド> -h
または コマンド -help
を実行するとコマンドのヘルプ(Usage)が表示されます
実際に以上のサンプルコードを使って実行した結果
% go run main.go -help
Usage of /var/folders/l0/tj5zqgc916vdp_k4wtv4wmd80000gw/T/go-build2703247103/b001/exe/main:
-b 真偽値の値の例
-i int
数値の場合の例
-s string
文字列の場合の例
その他
サンプル1
package main
import (
"flag"
"fmt"
)
func main() {
var (
msg = flag.String("String", "default message.", "is String")
num = flag.Uint("Number", 0, "is Nuber")
debug = flag.Bool("Boolean", false, "True or False")
)
flag.Parse()
fmt.Printf("param -m -> %s\n", *msg)
fmt.Printf("param -n -> %d\n", *num)
fmt.Printf("param -debug -> %t\n", *debug)
}
サンプル2
package main
import (
"flag"
"fmt"
)
func main() {
var (
msg string
num uint
debug bool
)
flag.StringVar(&msg, "m", "default message.", "is String")
flag.UintVar(&num, "n", 0, "is Nuber")
flag.BoolVar(&debug, "debug", false, "True or False")
flag.Parse()
fmt.Printf("param -m -> %s\n", msg)
fmt.Printf("param -n -> %d\n", num)
fmt.Printf("param -debug -> %t\n", debug)
}