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.使用这种语言可以在自己的脚本中,添加一些规则限制. ...
随机推荐
- Linux 基础笔记
1 vim /etc/inittab linux配置文件,这个文件负责设置init初始化程序初始化脚本在哪里;2 passwd 修改密码2.1 passwd xxx ...
- o-sync-and-o-direct
https://lwn.net/Articles/457667/ https://lwn.net/Articles/457667/ https://lwn.net/Articles/457667/ h ...
- c#-1 数据结构 定义相关 界面交互数据 Model层
1.时间用Nullable<UInt32> 除了最初时间用DateTime TimeSpan不行. 2.其他元素也用Nullable<UInt32> 3.list集合数据绑定类 ...
- Oracle Hints详解
在向大家详细介绍Oracle Hints之前,首先让大家了解下Oracle Hints是什么,然后全面介绍Oracle Hints,希望对大家有用.基于代价的优化器是很聪明的,在绝大多数情况下它会选择 ...
- 10天学会phpWeChat——第五天:实现新闻投稿功能
在前几讲里,我们逐渐实现了自己小模块的新闻列表展示.新闻详情展示功能,现在您已经初步有能力开发一个phpWeChat小模块了,本文将在已开发的hello world模块基础上,增加一个新的功能--新闻 ...
- #mysql:command not found
一.问题描述 1.在linux中已经安装好mysql,通过#ps -ef |grep mysql 能显示mysql已经启动,但去进入mysql命令页面出现如下问题: [root@root ~]# my ...
- 知识积累:CA详解
所有证书有多种文件编码格式,主要包括: CER编码(规范编码格式):是BER(基本编码格式)的一个变种,比BER规定得更严格DER编码(卓越编码格式):是BER(基本编码格式)的一个变种, 比BER ...
- 12、Java中的接口
接口:初期理解,可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口. 接口定义时,格式特点:1,接口中常见定 ...
- angularJs ng-model/ng-bind
ng-bind 与ng-model区别ng-bind是从$scope -> view的单向绑定,也就是说ng-bind是相当于{{object.xxx}},是用于展示数据的.ng-modle是$ ...
- 给破坏性的Rake任务加把锁 | Rails
抄自这里 直接贴代码 # lib/tasks/skip_prod.rake desc 'Raises exception if used in production' task skip_prod: ...