Undefined Title

Go言語 コマンドラインオプション解析(FlagSet)

2013-09-01

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())
}