大家都知道,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基础用法相关推荐

  1. Unity 3D开发-C#脚本语言的一些基础用法

    Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- ...

  2. R语言 plot()函数 基础用法

    plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题",type="线型",xlab="x轴名称" ...

  3. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  4. Promise详解(一) ----基础用法

    什么是Promise Promise是由社区最早提出并实现的,后加入到es6规范中.为更好处理javascript异步问题,用于解决其多次异步回掉嵌套问题.下面先尝试下promise的基础用法吧. 创 ...

  5. MongoDB 基础用法及学习笔记

    MongoDB 基础用法 环境配置与安装 安装 查看MongoDB版本 启动MongoDB服务 检查服务状态 启动服务 打开配置文件,连接MongoDB 查看数据列表 退出 MongoDB 连接 Mo ...

  6. 语言的学习基础,100个经典的算法

    POJ上做做ACM的题 语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生 ...

  7. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. [渗透攻防] 二.SQL MAP工具从零解读数据库及基础用法

    这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法.自己仍在慢慢探索网络 ...

  9. C语言入门之指针用法教程

    C语言入门之指针用法教程 这篇文章主要介绍了C语言入门之指针用法教程,主要对C语言中指针的本质及常见用法做了较为通俗易懂的分析,是后续深入学习C语言的基础,需要的朋友可以参考下 undefined u ...

  10. 第 13 章 MEncoder的基础用法

     http://www.mplayerhq.hu/DOCS/HTML/zh_CN/index.html 13.1. 选择编解码器及容器格式 上一页  第 13 章 MEncoder的基础用法  下一页 ...

最新文章

  1. 回收站功能在 Linux 中的实现
  2. nginx+tomcat+resin+jdk一键自动化安装脚本(4--resin安装脚本)
  3. 读者诉苦:Redis 宕机,数据丢了,老板要辞退我
  4. spring+Quartz定时任务
  5. vector与list的接口介绍与如何使用以及区别,附代码。
  6. 该!这个电视频道违规播出非法集资广告 被停播30天
  7. dbartisan mysql_修改DbVisualizer默认快捷键
  8. bzoj 2351: [BeiJing2011]Matrix(二维Hash)
  9. Docker Yearning + Inception SQL审核平台搭建
  10. Django:MySQL查询结果为datetime.date无法转换为JSON
  11. Dxg——C# 开发笔记整理分类合集【所有的相关记录,都整理在此】
  12. 视觉SLAM笔记(51) 非线性系统和 EKF
  13. 【数据挖掘】聚类 Cluster 简介 ( 概念 | 应用场景 | 质量 | 相似度 | 算法要求 | 数据矩阵 | 相似度矩阵 | 二模矩阵 | 单模矩阵 )
  14. Windows Terminal美化教程
  15. 斯嘉丽约翰逊60张pdf什么时间的?_巩俐入围威尼斯电影节的作品叫什么?巩俐为什么被称为女皇?...
  16. android前置摄像头拍摄,Android前置摄像头拍摄倒置照片
  17. git clone之报错git@gitee.com: Permission denied (publickey).fatal: Could not read from remote repositor
  18. 三维模型下构件关联类型系统展示
  19. mt6765和骁龙665哪个好_联发科mt6765怎么样?和联发科P30/P35/P40处理器区别对比哪个好...
  20. CAFFE-SSD中loss、accuracy曲线可视化(双Y轴)

热门文章

  1. 【可视化分析】雷达图
  2. GNU Assembler
  3. 解读:加性高斯白噪声信道
  4. 这是你了解的P2P 么?
  5. Leetcode力扣 MySQL数据库 1194 竞标赛优胜者
  6. android 调色盘插件,Adobe co CC2017下载
  7. .net c#通过Exif获取图片信息(参数)
  8. 小程序软件有必要申请软件著作权登记么?
  9. 身份证号码检验 js
  10. c语言报告实验反思,c语言实验总结与反思