2013-12-08 wcdj
go语言通过使用标准库里的flag包来处理命令行参数。
Package flag implements command-line flag parsing.
几点注意事项:
1,通过flag.String(), Bool(), Int()等方式来定义命令行中需要使用的flag。
2,在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。
3,命令行参数的格式可以是:
-flag xxx (使用空格,一个 - 符号)
--flag xxx (使用空格,两个 - 符号)
-flag=xxx (使用等号,一个 - 符号)
--flag=xxx (使用等号,两个 - 符号)
其中,布尔类型的参数防止解析时的二义性,应该使用等号的方式指定。
测试用例:
package main import ( "flag" "fmt" ) var Input_pstrName = flag.String("name", "gerry", "input ur name") var Input_piAge = flag.Int("age", 20, "input ur age") var Input_flagvar int func Init() { flag.IntVar(&Input_flagvar, "flagname", 1234, "help message for flagname") } func main() { Init() flag.Parse() // After parsing, the arguments after the flag are available as the slice flag.Args() or individually as flag.Arg(i). The arguments are indexed from 0 through flag.NArg()-1 // Args returns the non-flag command-line arguments // NArg is the number of arguments remaining after flags have been processed fmt.Printf("args=%s, num=%d\n", flag.Args(), flag.NArg()) for i := 0; i != flag.NArg(); i++ { fmt.Printf("arg[%d]=%s\n", i, flag.Arg(i)) } fmt.Println("name=", *Input_pstrName) fmt.Println("age=", *Input_piAge) fmt.Println("flagname=", Input_flagvar) } /* output: mba:filter gerryyang$ ./test_flag --name "aaa" -age=123 -flagname=0x11 para1 para2 para3 args=[para1 para2 para3], num=3 arg[0]=para1 arg[1]=para2 arg[2]=para3 name= aaa age= 123 flagname= 17 */
有疑问加站长微信联系(非本文作者)