Go语言之flag基础用法
大家都知道,Go语言主要是用来开发后台应用的,当然了,做一些命令行小工具对于Go来说也是小菜一碟,对于命令行工具来说,解析参数是很重要的,比如
ls -l
这个命令相信大家都很熟悉了,-l 就是参数,那么要使用go语言实现一个类似的命令行小工具,改怎么解析参数呢?
在Go语言中,命令行参数主要由flag包实现,如下面的代码
var (a stringb stringc intd inte boolf bool
)func init() {flag.StringVar(&a, "a", "aaa", "usage for a")flag.StringVar(&b, "b", "bb", "usage for b")flag.IntVar(&c, "c", 1, "usage for c")flag.IntVar(&d, "d", 2, "usage for d")flag.BoolVar(&e, "e", true, "usage for e")flag.BoolVar(&f, "f", false, "usage for f")
}
- 首先定义一些命令行参数名称(大家忽略变量名哈,此处仅用于说明用法,实际使用中变量不要这么命名)
- 然后在init函数中绑定这些参数
之后在main函数里面对参数进行输出,不过要记得先调用flag.Parse()函数哦,并且所以得参数绑定都必须在此之前
func main() {flag.Parse()fmt.Println("a:", a)fmt.Println("b:", b)fmt.Println("c:", c)fmt.Println("d:", d)fmt.Println("e:", e)fmt.Println("f:", f)others := flag.Args()fmt.Println(others)
}
OK,代码完成,编译运行之后,执行main.exe,结果如下
此时可以看到,参数的值都是默认值,而如果加上 -h 参数,则输出结果为该命令行工具的参数介绍
再加上参数的值,此时会发现打印出来的参数值,已经被修改了
而对于后面没有-符号制定的参数,flag统统归为non-flags,可以使用flag.Args()使用获取
Go语言之flag基础用法相关推荐
- Unity 3D开发-C#脚本语言的一些基础用法
Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- ...
- R语言 plot()函数 基础用法
plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",type="线型",xlab="x轴名称" ...
- Python语言学习:python语言的特点、入门、基础用法之详细攻略
Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...
- Promise详解(一) ----基础用法
什么是Promise Promise是由社区最早提出并实现的,后加入到es6规范中.为更好处理javascript异步问题,用于解决其多次异步回掉嵌套问题.下面先尝试下promise的基础用法吧. 创 ...
- MongoDB 基础用法及学习笔记
MongoDB 基础用法 环境配置与安装 安装 查看MongoDB版本 启动MongoDB服务 检查服务状态 启动服务 打开配置文件,连接MongoDB 查看数据列表 退出 MongoDB 连接 Mo ...
- 语言的学习基础,100个经典的算法
POJ上做做ACM的题 语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生 ...
- [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- [渗透攻防] 二.SQL MAP工具从零解读数据库及基础用法
这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法.自己仍在慢慢探索网络 ...
- C语言入门之指针用法教程
C语言入门之指针用法教程 这篇文章主要介绍了C语言入门之指针用法教程,主要对C语言中指针的本质及常见用法做了较为通俗易懂的分析,是后续深入学习C语言的基础,需要的朋友可以参考下 undefined u ...
- 第 13 章 MEncoder的基础用法
http://www.mplayerhq.hu/DOCS/HTML/zh_CN/index.html 13.1. 选择编解码器及容器格式 上一页 第 13 章 MEncoder的基础用法 下一页 ...
最新文章
- 回收站功能在 Linux 中的实现
- nginx+tomcat+resin+jdk一键自动化安装脚本(4--resin安装脚本)
- 读者诉苦:Redis 宕机,数据丢了,老板要辞退我
- spring+Quartz定时任务
- vector与list的接口介绍与如何使用以及区别,附代码。
- 该!这个电视频道违规播出非法集资广告 被停播30天
- dbartisan mysql_修改DbVisualizer默认快捷键
- bzoj 2351: [BeiJing2011]Matrix(二维Hash)
- Docker Yearning + Inception SQL审核平台搭建
- Django:MySQL查询结果为datetime.date无法转换为JSON
- Dxg——C# 开发笔记整理分类合集【所有的相关记录,都整理在此】
- 视觉SLAM笔记(51) 非线性系统和 EKF
- 【数据挖掘】聚类 Cluster 简介 ( 概念 | 应用场景 | 质量 | 相似度 | 算法要求 | 数据矩阵 | 相似度矩阵 | 二模矩阵 | 单模矩阵 )
- Windows Terminal美化教程
- 斯嘉丽约翰逊60张pdf什么时间的?_巩俐入围威尼斯电影节的作品叫什么?巩俐为什么被称为女皇?...
- android前置摄像头拍摄,Android前置摄像头拍摄倒置照片
- git clone之报错git@gitee.com: Permission denied (publickey).fatal: Could not read from remote repositor
- 三维模型下构件关联类型系统展示
- mt6765和骁龙665哪个好_联发科mt6765怎么样?和联发科P30/P35/P40处理器区别对比哪个好...
- CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)