go语言提供的flag包可以解析命令行的参数,而且使用起来非常的方便。 先看一个小例子:test.go
package main
import (
"flag"
"fmt"
)
var bFlag = flag.Bool("b", false, "If show message")
func main() {
//第一个参数,为参数名称,第二个参数为默认值,第三个参数是说明
name := flag.String("name", "Watson", "Input your name.")
age := flag.Int("age", 0, "Input your age.")
flag.Parse()
if !*bFlag {
fmt.Println("Mr. Watson, Come Here, I Want You!")
} else {
fmt.Println("Hello, ", *name, " age:", *age)
}
}
运行结果: Mr. Watson, Come Here, I Want You!
添加执行参数:-b=true -name=arun -age=28
运行结果: Hello, arun age: 28
几点注意事项:
1,通过flag.String(), flag.Bool, flag.Int(),flag.IntVar()等方式来定义命令行中需要使用的flag。
2,在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。
3,命令行参数的格式可以是:
-flag xxx (使用空格,一个 - 符号)
--flag xxx (使用空格,两个 - 符号)
-flag=xxx (使用等号,一个 - 符号)
--flag=xxx (使用等号,两个 - 符号)
其中,布尔类型的参数比较特殊,为了防止解析时的二义性,应该使用等号的方式指定。
4,命令行后面直接跟-help 、--help 或者是输入错误的参数就会把帮助文档显示出来,以上面的程序为例。
Usage of /private/var/folders/wy/v0w9vkf52836x21w_jz2wzlh0000gn/T/___test:
-age int
Input your age.
-bIf show message
-name string
Input your name. (default "Watson")