golang flag
1.命令行参数获取:
命令行获得可通过os.Args参数,
Args在os中定义为:
var Args []string
官方解释:Args hold the command-line arguments, starting with the program name.
2.命令行解析
golang 对命令行解析提供了flag包,按照功能可以分为以下三类:
1.基本命令解析
2.自定义参数解析
3.解析外部命令字符串
2.1 基本命令解析
命令注册:
通过flag.type(int,string等),提供命令名称, 默认参数值
按照返回值的形式分为两种, 返回值为值的指针, 通过传入指针,解析值后写入传入的指针
命令解析:调用flag.Parse()解析命令行
以bool解析为例子:
func main() {var block bool//如果有-b参数则为真,否则为假//使用./flag -b=false//./flag -b=tureflag.BoolVar(&block, "b", false, "set for block")flag.Parse()fmt.Println("falg", block)
}
2.自定义参数命令解析
自定义变量实现下面的接口:
type Value interface {
String() string
Set(string) error
}
并定义变量,通过flag.Var传入自定义变量
3.解析外部命令字符串
通过flag.NewFlagSet创建flagset.使用返回的set注册标志,调用set.Parse(argv)解析命令行. argv为字符串数组
实现代码如下:
package mainimport ("errors""flag""fmt""strings""time"
)//自定义结构实现接口
type args []string
func (a *args) String() string {return fmt.Sprintf("%v", *a)
}
func (i *args) Set(value string) error {if len(*i) > 0 {return errors.New("interval flag already set")}for _, dt := range strings.Split(value, ",") {*i = append(*i, dt)}return nil
}
func base_parse() {const (defaultGopher = "pocket"usage = "the variety of gopher")var log int//init for init param, return int point// param:name, deaault val, help message//解析参数通过指针返回var intflag = flag.Int("int", 100, "help message for int")flag.StringVar(&gopherType, "gopher_type", defaultGopher, usage)flag.StringVar(&gopherType, "g", defaultGopher, usage+"(shorthand)")//指定一个传入参数的指针flag.IntVar(&log, "log_level", 0, "log level")flag.Parse()fmt.Println("initFlag:", *intflag)fmt.Println("log_level:", log)fmt.Println("gopherType string ", gopherType)
}/*自定义参数解析*/
func userdef_parse() {var argFlag argsflag.Var(&intervalFlag, "deltaT", "comma-separated list of intervals to use between events")flag.Var(&argFlag, "arg", "comma-separated list of intervals to use between events")flag.Parse()fmt.Println("arg string ", argFlag)fmt.Println(intervalFlag)
}/*解析传入的字符串*/
func parse_input(arg string) {argv := []string{}for _, dt := range strings.Split(arg, " ") {argv = append(argv, dt)}//创建flagSetset := flag.NewFlagSet("test", flag.ExitOnError)//注册解析参数varflag := set.String("ver", "myver", "version")pflag := set.String("p", "myp", "version")//解析参数set.Parse(argv)fmt.Println("input parse:", *varflag, *pflag)
}
func main() {userdef_parse()parse_input("-p 123 -ver 1234")
}
golang flag相关推荐
- 使用Golang flag包解析字符串
本篇文章主要介绍如何使用flag包解析字符串,没有介绍flag包的详细使用,需要学习flag包如何使用的同学可以参考如下这篇文章: Go语言中使用flag包对命令行进行参数解析的方法 https:// ...
- golang flag简单用法
版权声明:本文可能为博主原创文章,若标明出处可随便转载. https://blog.csdn.net/Jailman/article/details/80972643 package mainimpo ...
- golang flag包使用示例:接收命令行参数
flag包 package mainimport "flag" import "fmt"// 定义命令行参数对应的变量,这三个变量都是指针类型 var cliN ...
- golang flag包(命令行参数解析)
1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...
- golang flag.Parse包
package mainimport ("flag""fmt" ) // 定义命令行参数对应的变量,返回类型指针类型*string var name = fla ...
- golang byte转string_Golang和Rust语言常见功能/库
时下最流行.最具发展前途的的两门语言是Golang和Rust.Golang语言简洁.高效.并发.并且有个强大的囊括了常见功能标准库.与之相对比,Rust语言则主要是安全.高性能.虽然Rust没有gol ...
- python flag 参数_flag_flagpython_js开关flag - 云+社区 - 腾讯云
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! apple.stackexchange.comquestions336888wh ...
- Golang实现文件搜索器
Golang实现文件搜索器 前言 一.文件搜索器 二.使用步骤 1.查看帮助 2.查询文件 三.代码说明 1.命令行参数解析 2.递归查询实现 四.完整代码 前言 这个搜索器使用到了Golang fl ...
- Golang Study
安装 下载第三方包 - Golang中国 IDEA IDEA写Golang的一些操作/技巧 - 冥灭 - SegmentFault 亲测可用!!!golang如何在idea中保存时自动进行代码格式化 ...
- Go获取命令行参数及信号量处理
部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库. golang os库获取命令行参数 os可以通过变量Args来获取命令参数 ...
最新文章
- hadoop元数据合并过程_Hadoop元数据合并异常及解决方法
- SAP License:SAP货币转换
- 解决IDEA 中git 无法自动push 提交问题 Push failed: Failed with error: Could not read from remote repository.
- Java 数组在内存中的结构
- Linux的用户和组群管理
- Linux Tun/Tap网口(/dev/net/tun)的读写方法
- Cocos2d-x音乐和音效概述
- Excel填充日期和星期
- Differential Geometry之第十章极小曲面
- excel小技巧1:修改的日期格式为什么要双击一下单元格才能变
- Ubuntu 切换中文目录为英文目录
- arXiv 注册完整过程(图文详解)
- 给Date加上23时59分59秒
- sigmoid和softmax
- 用Python+selenium实现在全国报刊索引上搜集资料
- 如何从实验室菜鸟如何蜕变成实验巨人?
- SDN初步:Mininet(SDN测试平台)Ryu(SDN控制器)
- 苹果 iOS 内购三步曲:App 内退款、历史订单查询、绑定用户防掉单
- 电脑键盘部分按键失灵_电脑键盘失灵个别字母不灵怎么办 键盘失灵解决方法...
- 微软CRM使用(视频教学