golang命令行参数解析
1. os基础处理os包中有一个string类型的切片变量os.Args,其用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。参数会放置在切片os.Args[]中(以空格分隔),从索引1开始(os.Args[0]放的是程序本身的名字)。 fmt.Println("Parameters:",os.Args[1:]) ? 2. flag参数解析flag包可以用来解析命令行选项,但通常被用来替换基本常量。例如,在某些情况下希望在命令行给常量一些不一样的值。 type Flag struct { Name string // name as it appears on command line Usage string // help message Value Value // value as set DefValue string // default value (as text); for usage message } flag的使用规则是:首先定义flag(定义的flag会被解析),然后使用Parse()解析flag,解析后已定义的flag可以直接使用,未定义的剩余的flag可通过Arg(i)单独获取或通过Args()切片整个获取。 定义flag func String(name string,value string,usage string) *string func StringVar(p *string,name string,usage string) func Int(name string,value int,usage string) *int func IntVar(p *int,usage string) 解析flag func Parse() Parse() parses the command-line flags from os.Args[1:]. Must be called after all flags are defined and before flags are accessed by the program. func Arg(i int) string func Args() []string Arg returns the i‘th command-line argument. Arg(0) is the first remaining argument after flags have been processed. Args returns the non-flag command-line arguments. After parsing,the arguments following the flags are available as the slice flag.Args() or individually as flag.Arg(i). The arguments are indexed from 0 through flag.NArg()-1. func NArg() int NArg is the number of arguments remaining after flags have been processed. Flags may then be used directly. If you‘re using the flags themselves,they are all pointers; if you bind to variables,they‘re values. package main import ( "fmt" "flag" ) func main(){ var new_line = flag.Bool("n",false,"new line") var max_num int flag.IntVar(&max_num,"MAX_NUM",100,"the num max") flag.PrintDefaults() flag.Parse() fmt.Println("There are",flag.NFlag(),"remaining args,they are:",flag.Args()) fmt.Println("n has value: ",*new_line) fmt.Println("MAX_NJUM has value: ",max_num) } $ go build -o flag flag.go $ ./flag -MAX_NUM int the num max (default 100) -n new line There are 0 remaining args,they are: [] n has value: false MAX_NJUM has value: 100 $ ./flag -n -MAX_NUM=1000 wang qin -MAX_NUM int the num max (default 100) -n new line There are 2 remaining args,they are: [wang qin] n has value: true MAX_NJUM has value: 1000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |