Go言語 コマンドラインオプション解析(FlagSet)
flag packageを使います。
型のバリエーションなどはGo言語 コマンドラインオプション解析を見てください。
ひとつハマったことがあって、FlatSet.Parseにはos.Args[1:]
を渡す。
os.Args
をそのまま渡すとオプションの認識をしてくれないみたい。
package main
import (
"flag"
"fmt"
"os"
)
var flagset = flag.NewFlagSet("default", flag.PanicOnError)
var silent bool
var name *string
func main() {
flagset.BoolVar(&silent, "silent", false, "silent mode")
name = flagset.String( "name", "taro", "your name")
if len(os.Args) == 1 {
flagset.PrintDefaults()
os.Exit(1)
}
err := flagset.Parse(os.Args[1:])
if err != nil {
panic(err)
}
fmt.Println(flagset.Args())
fmt.Println("--")
fmt.Println("NArg()", flagset.NArg())
fmt.Println("NFlag()", flagset.NFlag())
}