flag--命令行参数解析之StringVar

func StringVar

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

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

通俗来说,在命令行输入命令,后面可以带上 -xxx xx 这样的参数。
通过下面例子来理解:

// TestFlag project main.go
package 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: 111
Args2: 222
Args3: 333
String args: a
os.Args[0]: Testflag
os.Args[1]: -Args
os.Args[2]: a

  • 然后,再看看调换参数位置后的输出结果
Testflag 111 222 333 -Args a结果如下:
Args1: 111
Args2: 222
Args3: 333
String args: defaultValue
os.Args[0]: Testflag
os.Args[1]: 111
os.Args[2]: 222

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

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

posted on 2016-11-30 17:43 候鸟Anson 阅读(...) 评论(...) 编辑 收藏

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

flag--命令行参数解析之StringVar相关推荐

  1. GO标准库—命令行参数解析FLAG

    评论有人提到没有例子,不知道讲的是什么.因此,为了大家能够更好地理解,特意加了一个示例.其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了.建议阅读 <Go语言标准 ...

  2. Go 学习笔记(45)— Go 标准库之 flag(命令行参数解析)

    1. 参数解析说明 import "flag" flag 包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个 set 集合.每条都有各自的状态参数. 使用 f ...

  3. golang flag包(命令行参数解析)

    1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...

  4. golang 命令行参数解析

    这里填写标题 1. golang 命令行参数解析 1.1. os.Args 1.2. flag 1.2.1. flag 的其他参数 1.2.2. 其它 1.2.2.1. 命令行解析出来后对应的是代码中 ...

  5. Python命令行参数解析

    Python命令行参数解析 Python命令行解析是指读取终端传入的参数 sys.argv属性 这个是sys库立面的一个属性,其用于接收传入程序的命令行参数.它是一个列表.也就是差不多下面这种类型 s ...

  6. 【Qt】通过QtCreator源码学习Qt(六):命令行参数解析实现

    参考下大神的命令行参数解析是如何是实现的 //使用const char []代替宏定义字符串,我以前都是用const QString,想想好傻 const char SETTINGS_OPTION[] ...

  7. python命令行参数解析OptionParser类用法实例

    python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下:     from opt ...

  8. 3gpp文件头文件解析_居于LLVM 的命令行参数解析

    在写命令行程序的时候经常需要解析各种命令行参数.打印help信息等,觉得非常的麻烦.今天介绍一种超级棒的命令参数解析的方法:居于LLVM 的命令行参数解析,有了它妈妈再也不用担心我不会解析命令行参数^ ...

  9. Python命令行参数解析模块------argparse

      首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...

最新文章

  1. 动真格!因为论文!138名研究生丧失学位申请资格,导师也被罚……
  2. JavaScript正则表达式详解(一)正则表达式入门
  3. 系列文章--jQuery教程
  4. 对Fragment生命周期的理解以及其与Activity的关联
  5. IMXRT 分散加载文件 修改OCRAM,DTCM、ITCM大小
  6. 三星Galaxy Note 20相机细节曝光:这个镜头略显鸡肋或被舍弃
  7. ultraedit 运行的是试用模式_原来用Unittest框架写接口测试用例这么简单!
  8. Android获取前台进程的方法
  9. c语言 int转bool,C语言的布尔类型(_Bool)【转】
  10. 发现同构:Gartner曲线、达克效应 与 跨越鸿沟
  11. 锆石FPGA---verlog语法篇
  12. 新手学游戏开发必知的一课
  13. SAP月结在制品结算时不产生凭证的一个问题
  14. 计算机二级 word 论文格式,(计算机二级word练习3.doc
  15. js正则验证身份证号码是否真实有效
  16. VS用OLE方式对Excel进行读写操作
  17. ADIUM不能登录MSN
  18. 小米4c原版android哪个好,小米4c和小米4哪个好
  19. python 按键精灵脚本_[620]使用Python实现一个按键精灵
  20. Java学习 day11 (继承与多态)接口、多态

热门文章

  1. uboot源码分析(1)uboot 命令解析流程简析
  2. 计算机与英语教学的论文开题报告,英语教学论文开题报告
  3. mysql------变量
  4. Unity3D开发的赛车单机小游戏详细介绍(附有游戏下载链接)
  5. 乘法口诀表java加表格_Java 面试 - 打印九九乘法口诀表
  6. ensp ftp服务器配置文件,ensp配置ftp服务器,显示连接失败。
  7. Lua注册C++类及函数
  8. 图像语义分割python_图像语义分割出的json文件和原图,用plt绘制图像mask
  9. 【java学习之路】(java框架)007.IoC和DI注解开发
  10. php 给数组里面压入数组,php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)...