博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flag--命令行参数解析之StringVar
阅读量:5135 次
发布时间:2019-06-13

本文共 1443 字,大约阅读时间需要 4 分钟。

func

func StringVar(p *, name , value , usage )

StringVar定义了一个有指定名字,默认值,和用法说明的string标签。 参数p指向一个存储标签解析值的string变量。

通俗来说,在命令行输入命令,后面可以带上 -xxx xx 这样的参数。

通过下面例子来理解:

// TestFlag project main.gopackage mainimport (	"flag"	"fmt"	"os")func main() {	//定义变量args,用来存放指定参数名的参数内容	var args string	//StringVar定义了一个有指定名字,默认值,和用法说明的string标签。参数p指向一个存储标签解析值的string变量。	//Args 指定参数名 应用的时候 在命令行输入 -Args xxx	//defaultValue 如果没有指定Args的值,那么Args的内容默认是"defaultValue"	//Usage 用法说明字符串	flag.StringVar(&args, "Args", "defaultValue", "Usage:xxx")	//解析上面定义的标签	flag.Parse()	fmt.Println("Args1:", flag.Arg(0))	fmt.Println("Args2:", flag.Arg(1))	fmt.Println("Args3:", flag.Arg(2))	fmt.Println("String args:", args)	fmt.Println("os.Args[0]:", os.Args[0])	fmt.Println("os.Args[1]:", os.Args[1])	fmt.Println("os.Args[2]:", os.Args[2])}
  •  编译后,在命令行执行下面命令:
Testflag -Args a 111 222 333输出结果如下:Args1: 111Args2: 222Args3: 333String args: aos.Args[0]: Testflagos.Args[1]: -Argsos.Args[2]: a
  •  然后,再看看调换参数位置后的输出结果
Testflag 111 222 333 -Args a结果如下:Args1: 111Args2: 222Args3: 333String args: defaultValueos.Args[0]: Testflagos.Args[1]: 111os.Args[2]: 222

-Args 放在后面,为什么没有被正确解析出来? 这是因为解析到非FLag变量就停止解析Flag参数了。所以,flag参数应该放在普通参数的前面指定。

  • 如果不指定 -Args参数,那么这个参数默认值就是defaultValue
Testflag 111 222 333结果如下:Args1: 111Args2: 222Args3: 333String args: defaultValueos.Args[0]: Testflagos.Args[1]: 111os.Args[2]: 222

 

posted on
2016-11-30 17:43 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/taityoukou/p/6118826.html

你可能感兴趣的文章
Linux环境下MySql安装和常见问题的解决
查看>>
lrzsz——一款好用的文件互传工具
查看>>
ZPL语言完成条形码的打印
查看>>
这20件事千万不要对自己做!
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
玩转小程序之文件读写
查看>>
HashPump用法
查看>>
cuda基础
查看>>
virutalenv一次行安装多个requirements里的文件
查看>>
Vue安装准备工作
查看>>
.NET 母版页 讲解
查看>>
Android Bitmap 和 Canvas详解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
导入导出数据库和导入导出数据库表
查看>>
linux下操作mysql
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>