go言語のコマンドライン引数
go言語で書いたプログラムでコマンドライン引数を利用するにはos.Argsを使用する方法と、flag.Args()を使用する方法がある。
前者のosパッケージの方は引数を単純にスペースで分割して受け取ってリストで返すようである。
一方、後者のflagパッケージの方はハイフンでのオプション指定をされた引数を受け取ったり、-hでヘルプ画面を出せるようになる。
osパッケージ
package main import ( "fmt" "os" ) func main() { fmt.Println(os.Args) }
$ go run os.go 1 a bu 3 [/tmp/go-build468017920/command-line-arguments/_obj/exe/os 1 a bu 3]
flagパッケージ
package main import ( "flag" "fmt" ) var ( intOpt = flag.Int("i", 1234, "help message for i option") boolOpt = flag.Bool("b", false, "help message for b option") strOpt = flag.String("s", "default", "help message for s option") ) func main() { flag.Parse() fmt.Println(flag.Args()) fmt.Println(*intOpt) fmt.Println(*boolOpt) fmt.Println(*strOpt) }
$ go run flag.go -i 444 aaaa iu [aaaa iu] 444 false default
$ go run flag.go -h Usage of /tmp/go-build959953608/command-line-arguments/_obj/exe/flag: -b help message for b option -i int help message for i option (default 1234) -s string help message for s option (default "default") exit status 2