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
参考

matope.hatenablog.com