golang中的flag提供了一种基于命令行的、开箱即用的、提取命令行参数的方式。

package main

import (
	"flag"
	"fmt"
)

func main() {
	wordPtr := flag.String("word", "foo", "a string")
	numPtr := flag.Int("num", 123, "a number")

	flag.Parse()

	fmt.Printf("word = %s\n", *wordPtr)
	fmt.Printf("num = %d\n", *numPtr)
}

这样就可以通过命令行来获取参数了,每个参数有一个名字、默认值和说明。

$ go run flat_demo.go -word=hello
word = hello
num = 123
wordnumnum

也可以这样指定多个参数,像下面这样

$ go run flat_demo.go -word=hello -num=9
word = hello
num = 9
-h--help
$ go run flat_demo.go --help
Usage of /var/folders/xf/_wgd_jh5553d3cdtggwd8qq80000gp/T/go-build2482982965/b001/exe/flat_demo:
  -num int
        a number (default 123)
  -word string
        a string (default "foo")

不得不说这个封装非常的实用,我之前实用其它时,单单是用循环来提取参数就要写好多代码。