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")
不得不说这个封装非常的实用,我之前实用其它时,单单是用循环来提取参数就要写好多代码。