1. os基础处理
os包中有一个string类型的切片变量os.Args,其用来处理一些基本的命令行参数,它在程序启动后读取命令行输入的参数。参数会放置在切片os.Args[]中(以空格分隔),从索引1开始(os.Args[0]放的是程序自己的名字)。app
fmt.Println("Parameters:", os.Args[1:])
2. flag参数解析
flag包能够用来解析命令行选项,但一般被用来替换基本常量。例如,在某些状况下但愿在命令行给常量一些不同的值。ui
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()切片整个获取。spa
定义flag命令行
func String(name string, value string, usage string) *string func StringVar(p *string, name string, value string, usage string) func Int(name string, value int, usage string) *int func IntVar(p *int, name string, value int, usage string)
解析flagcode
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.blog
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.rem
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.string
func NArg() int
NArg is the number of arguments remaining after flags have been processed.it
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