cd eFlag/cmd
go run . -s=string -i=1 -bool=true
go run . -s string --i 1 -bool=true
go run . -s=string -i 1 --bool true
go run . -s=string -i=1 -bool=true x y z
go run . -s string -i 1 -bool=true x y z
go run . -s string -i 1 -bool=true - x y z
go run . -s string -i 1 -bool=true -- x y z
类型:
- 标志型flag, 如: cmd -flag=arg
- 非标型non-flag,如: cmd arg
传递:
- 标志型命令参数和变量绑定.
- 解析命令行参数.
- 获取命令行参数.
标志性命令参数和变量绑定:
//方式一:
var flagvar = flag.Int("flagname", "default value", "help message for flagname")
//方式二:
var flagvar string
func init() {
flag.IntVar(&flagvar, "flagname", "default value", "help message for flagname")
}解析:
func main() {
flag.Parse()
//...
}
使获取命令行参数用:
xxx := flagvar //标志型
yyy := flag.Args() //非标志型标志型参数的使用格式:
- -flag
- -flag=x
- -flag x // 非bool型标志参数
为什么 -flag x 格式不适用于bool型标志参数?
- cmd -flagbool file1 file2 file3 , 表示 cmd 命令带flagbool标志操作 file1,file2,file3 文件.
- cmd -flagbool false file2 file3, 有歧义:一 表示 cmd 命令带flagbool标志操作 false,file2,file3 三文件;二 表示 cmd 命令带flagbool false 标志操作 file2,file3 两文件.
命令行参数的使用格式:
- cmd -flag=farg nfarg 最常用格式,解析到第一个不带"-"的参数前.
- cmd -flag=farg - nfarg 标志型参数解析到"-"之前,"-"属于第一个非标志型参数,被解析到 flag.arg(0) 中.
- cmd -flag=farg -- nfarg 标志型参数解析到"--"之后,"--"是标志型参数终止符.