Go 用flag包解析命令行参数
来源:互联网 发布:2016中国网民数据统计 编辑:程序博客网 时间:2024/05/01 23:02
参数形式
flag包能解析的参数有如下四种形式,使用的时候分三种类型:
类型一
cmd -flag=x // 支持所有类型
cmd -flag x // 只支持非bool类型类型二
cmd -flag // 只支持bool类型类型三
cmd abc // 没有flag的参数
类型一
cmd -flag=x
cmd -flag x //只支持非bool类型
定义参数
有两种形式,下方Xxx代表类型
flag.Xxx()
flag.String(), Bool(), Int() 这种形式返回一个指向该参数的指针
例子
var date = flag.Int("d", 20171107, "help message for date") flag.Parse()
注意 date 是指向 -d 参数值的指针
若在命令行输入
-d=20121212 -a=20
或者-d 20121212 -a 20
,则我们在程序中即可用 *date 取得 -d 的值20121212若只输入
-a=20
或者-a 20
,因为缺省标志-d
,则 *date 取到的是 -d 定义中的默认值 20171107flag.XxxVar()
flag.StringVar(), BoolVar(), IntVar() 这种形式把参数绑定到一个变量
例子
var age intflag.IntVar(&age, "a", 18, "help message for age")flag.Parse()
命令行输入
-d=20121212 -a=20
或者-d=20121212 -a 20
,在程序里 变量age 则获取到 -a 的值 20若只输入
-d=20121212
或者-d=20121212
,缺省标志-a, 则 变量age 获取定义中的默认值 18
解析参数
注意到上面例子最后都带有一行 flag.Parse()
因为定义好参数后,只有调用方法 flag.Parse() 解析命令行参数到定义的flag,这样我们才能使用上面两个例子的 *date 和 age 取得对应flag的参数值
类型二——不带参数的标志
cmd -flag //该形式只支持bool类型,对应的值是1, 0, t, f, true, false, TRUE, FALSE, True, False
默认的,如果我们在命令行里提供了-flag,则其对应的值为true,否则为flag.Bool/BoolVar中指定的默认值;如果希望显示设置为false则使用-flag=false。
例子
var exist_f = flag.Bool("f", false, "help message for format")flag.Parse()
当在命令行输入 -d=123 -f
时,程序里 *exist_f 的值就为 true 了
若命令行只输入 -d=123
时,因为缺省-f,*exist_f 的值为事先定义中默认的 false
类型三——不带标志的命令行参数
cmd abc //没有flag的参数
通过 flag.Args() 获取非flag参数列表
通过 flag.Arg(i) 来获取非flag命令行第i个参数,i 从 0 开始
还可以通过flag.NArg() 获得非flag参数个数
例子
当命令行敲入 -d 20121212 -a 20 Huang JiaMing
,最后两个值即为不带标志的参数
...flag.Parse()var fullName = flag.Args() // fullName = ['Huang', 'JiaMing']var firstName = flag.Arg(0) // firstName = Huangvar lastName = flag.Arg(1) // lastName = JiaMingvar num = flag.NArg() // num = 2
- Go 用flag包解析命令行参数
- go flag 包解析命令行参数
- Go 的 flag 包可以解析命令行的参数
- GO语言flag参数解析
- Golang: 使用flag包进行命令行参数解析
- Go语言的参数解析(flag)
- golang flag标准库命令行参数解析
- Go解析命令行传入参数
- Go flag包示例
- 命令行解析:flag
- 转:标准库—命令行参数解析flag
- Go-命令行参数
- Go语言学习之flag包(The way to go)
- 用getopt解析命令行参数
- Python 引包 argparse 程序执行解析命令行参数介绍
- C 语言getopt与go语言flag获取命令参数
- 用Google的gflags解析命令行参数
- 命令行参数解析(1)
- 用嵌套循环计算1!+2!+...+10!
- Struts的核心与原理分析
- 数据结构-链式队列
- 各大互联网公司技术团队
- 第七周项目二C/C++数据结构之自建算法库——链队(链式队列)
- Go 用flag包解析命令行参数
- Android 实现 View 滑动的七种方法
- iOS 深度理解浅拷贝与深拷贝
- 数串输出组合最大
- Colossal Fibonacci Numbers! UVA
- win10下python3.6安装numpy,scipy,matplotlib
- 数据结构上机实验三:二叉树
- python 多进程
- 上机练习题——接口