flag その2

その1消しちゃった…まあいいか
flag2.go

package main
import ("fmt";"flag")
var f1 int
func init() {
	flag.IntVar(&f1, "f1", 999, "整数");
}
var f2 *string = flag.String("f2", "xxx", "文字列");
var b = flag.Bool("b", true, "bool");
func main() {
	flag.Parse();
	fmt.Printf("f1[%d] f2[%s] b[%t]\n", f1, *f2, *b);
	for i := 0; i < flag.NArg(); i++ {
		fmt.Printf("%s\n", flag.Arg(i))
	}
}
C:\go>flag2
f1[999] f2[xxx] b[true]

当然デフォルト値

C:\go>flag2 -x
flag provided but not defined: -x
Usage of flag2:
  -f1=999: 整数
  -f2="xxx": 文字列
  -b=true: bool

“-x”なんか知らんのでUsageが出る

C:\go>flag2 -f1=123 456 -f2=789
f1[123] f2[xxx] b[true]
456
-f2=789

オプションは前にまとめろと

C:\go>flag2 -f1=1 -f2="a bc" -b=f abc def
f1[1] f2[a bc] b[false]
abc
def

イコール

C:\go>flag2 -f1 1 -f2 "a bc" -b f abc def
f1[1] f2[a bc] b[true]
f
abc
def

boolだけ動作が違うらしい