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 main import (
"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 输出结果如下:
Args1:
Args2:
Args3:
String args: a
os.Args[]: Testflag
os.Args[]: -Args
os.Args[]: 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
flag--命令行参数解析之StringVar的更多相关文章
- golang-flag - 命令行参数解析
flag - 命令行参数解析 在写命令行程序(工具.server)时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自己写代码解析, ...
- [Go] 命令行参数解析包(flag 包)使用详解
Go 的 flag 包可以解析命令行的参数. 一.命令行语法 命令行语法主要有以下几种形式: cmd -flag // 只支持bool类型 cmd -flag=xxx cmd -flag ...
- python命令行参数解析模块argparse和docopt
http://blog.csdn.net/pipisorry/article/details/53046471 还有其他两个模块实现这一功能,getopt(等同于C语言中的getopt())和弃用的o ...
- gflags命令行参数解析
gflags库是google开源的命令行参数解析工具. 安装 官方没有提供二进制库,但是Debian/Ubuntu平台本身提供了二进制库,可以直接git clone https://github.co ...
- $命令行参数解析模块argparse的用法
argparse是python内置的命令行参数解析模块,可以用来为程序配置功能丰富的命令行参数,方便使用,本文总结一下其基本用法. 测试脚本 把以下脚本存在argtest.py文件中: # codin ...
- Google开源命令行参数解析库gflags
Google开源命令行参数解析库gflags http://blog.csdn.net/lming_08/article/details/25072899 CMDLINE的解析 http://blog ...
- PHP 命令行参数解析工具类
<?php/** * 命令行参数解析工具类 * @author guolinchao * @email luoyecb@163.com */class CommandLine{ // store ...
- Python命令行参数解析模块getopt使用实例
Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- Python 中命令行参数解析工具 docopt 安装和应用
什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...
随机推荐
- [原创]cocos2d-x研习录-第三阶 特性之按键与虚拟键盘
Cocos2D-x引擎支持按键事件,它能检测设备的键盘输入并处理相应的事件.而基于不同操作系统的移动设备,可供用户操作的按键数量和功能都存在差异. Cocos2D-x使用CCKeypadDeleg ...
- JSBinding+Bridge.NET:生成绑定(导出)
将框架代码导出到 JavaScript.就可以在 JavaScript 中调用 框架代码 的功能. 注意,这个功能是在 Js工程中做的,Cs工程没有这回事. 如何导出? 1. 将需要导出的类添加到 J ...
- linux下的代码比较工具
在linux下有很多不错的代码比较工具:meld.DiffMerge.xxdiff.diffuse.Kompare等... diff : 文件比较工具用于比较计算机上的文件的内容,找到他们之间相同与不 ...
- 任务型sql
一.创建表空间与用户,因为数据文件没有指定路径,所以需要修改数据文件路径,才有了下面的需求. create tablespace wo datafile 'wo.dbf' size 20m;creat ...
- netflix:Conductor微服务编排引擎
项目地址: https://github.com/Netflix/conductor Conductor 是 Netflix 受需要运行全球流媒体业务流程的启发,构建的基于云的微服务编排引擎. Con ...
- Storm进阶
并行度 在Storm集群中真正运行Topology的主要有三个实体:worker.executor.task,下图是可以表示他们之间的关系. 数据流模型 对于一个Spout或Bolt,都会有多个tas ...
- Head First 设计模式之命令模式(CommandPattern)
前言: 本章会将封装带入到一个全新的境界,把方法调用封装起来.通过封装方法调用,把运算块包装成形.调用此运算的对象不需要知道事情是如何进行的,只要知道如何使用包装形成的方法来完成它就ok了. 1 现实 ...
- 在CentOS上安装并运行SparkR
环境配置—— 操作系统:CentOS 6.5 JDK版本:1.7.0_67 Hadoop集群版本:CDH 5.3.0 安装过程—— 1.安装R yum install -y R 2.安装curl-de ...
- 【学】React的学习之旅6-组件的嵌套2
<input type=text placeholder='aaa'>, placeholder属性是定义文本框在没有输入值之前显示的一段灰色提示 ()=>{}箭头函数在ECMA6里 ...
- es6 let
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...