golang实现命令行程序的使用帮助功能

通过flag包我们可以很方便的实现命令行程序的参数标志,接下来我们来看看如何实现命令行程序的使用帮助,通常以参数标志-h--help的形式来使用。

自动生成使用帮助

我们只需要声明其他参数标志,并执行解析,flag包会帮我们自动生成使用帮助。

//main.go
//输出2个数,输出较大的数
package main

import (
	"flag"
	"fmt"
	"math"
)

func main() {
	firstFlag := flag.Float64("first", 0, "第一个数")
	secondFlag := flag.Float64("second", 0, "第二个数")
	flag.Parse()
	max := math.Max(*firstFlag, *secondFlag)
	fmt.Print(max)
}

编译生成后执行看看:

E:\GOPATH\src\max>max.exe -help
Usage of max.exe:
  -first float
        第一个数
  -second float
        第二个数

E:\GOPATH\src\max>max.exe -first=5 -second=66
66

自定义使用帮助

也许你不大喜欢或不满足于自动生成的使用帮助,那么也你可以试试自定义使用帮助。同样我们使用flag包,但这里重写了flag.Usage来实现自定义使用帮助。

//main.go
package main

import (
	"flag"
	"fmt"
)

const help = `
程序名称: max
描述: 输出2个数,输出较大的数.
示例:
1. test -help
2. max -first=5 -second=66
`

func main() {
	flag.Usage = func() {
		fmt.Print(help)
	}
	flag.Parse()
	//这里只实现使用帮助.
}

编译生成后执行看看:

E:\GOPATH\src\max>max.exe -help

程序名称: max
描述: 输出2个数,输出较大的数.
示例:
1. test -help
2. max -first=5 -second=66

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • Go语言命令行操作命令详细介绍

    Go 命令 Go语言自带有一套完整的命令操作工具,你可以通过在命令行中执行go来查看它们: 图1.3 Go命令显示详细的信息 这些命令对于我们平时编写的代码非常有用,接下来就让我们了解一些常用的命令. go build 这个命令主要用于测试编译.在包的编译过程中,若有必要,会同时编译与之相关联的包. 1.如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件.如果你需要在$GOPATH/pkg下生成相应的文件,那就得执行go install了

  • 详解Go 创建命令行工具的方法

    前言 最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼"真香". 但现阶段相对来说还是 Python 写的多一些,偶尔还得回炉写点 Java :自然对 Go 也谈不上多熟悉. 于是便利用周末时间自己做个小项目来加深一些使用经验.于是我便想到了之前利用 Java 写的一个博客小工具. 那段时间正值微博图床大量图片禁止外链,导致许多个人博客中的图片都不能查看.这个工具可以将文章中的图片备份到本地,还能将图片直接替换到

  • 一文秒懂Go 编写命令行工具的代码

    前言 最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼"真香". 但现阶段相对来说还是 Python 写的多一些,偶尔还得回炉写点 Java :自然对 Go 也谈不上多熟悉. 于是便利用周末时间自己做个小项目来加深一些使用经验.于是我便想到了之前利用 Java 写的一个博客小工具. 那段时间正值微博图床大量图片禁止外链,导致许多个人博客中的图片都不能查看.这个工具可以将文章中的图片备份到本地,还能将图片直接替换到

  • Golang开发命令行之flag包的使用方法

    目录 1.命令行工具概述 2.flag包介绍 3.flag包命令行参数的定义 4.flag包命令行参数解析 5.flag包命令行帮助 6.flag定义短参数和长参数 7.示例 1.命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本. 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能够使开发人员更加专注于工作,提高效率,因为键盘操作模式更容易产生肌肉记忆 举个栗子:我司业务

  • Go语言执行系统命令行命令的方法

    本文实例讲述了Go语言执行系统命令行命令的方法.分享给大家供大家参考.具体如下: 执行Go代码时可以附加参数,包括要执行的命令和给命令的参数 复制代码 代码如下: package main import (   "os"   "os/exec"   "fmt"   "flag"   "strings" ) func main() {   command := flag.String("cmd&qu

  • Go语言中使用flag包对命令行进行参数解析的方法

    flag flag 是Go 标准库提供的解析命令行参数的包. 使用方式: flag.Type(name, defValue, usage) 其中Type为String, Int, Bool等:并返回一个相应类型的指针. flag.TypeVar(&flagvar, name, defValue, usage) 将flag绑定到一个变量上. 自定义flag 只要实现flag.Value接口即可: type Value interface { String() string Set(string)

  • go语言执行windows下命令行的方法

    本文实例讲述了go语言执行windows下命令行的方法.分享给大家供大家参考.具体如下: 在golang里执行windows下的命令行,例如在golang里面调用 del d:\a.txt 命令 复制代码 代码如下: package main import(     "fmt"     "os/exec" ) func main(){       c := exec.Command("cmd", "/C", "del

  • golang实现命令行程序的使用帮助功能

    通过flag包我们可以很方便的实现命令行程序的参数标志,接下来我们来看看如何实现命令行程序的使用帮助,通常以参数标志-h或--help的形式来使用. 自动生成使用帮助 我们只需要声明其他参数标志,并执行解析,flag包会帮我们自动生成使用帮助. //main.go //输出2个数,输出较大的数 package main import ( "flag" "fmt" "math" ) func main() { firstFlag := flag.F

  • golang中命令行库cobra的使用方法示例

    简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序.下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 ap

  • Windows网络命令行程序参数说明

    Windows网络命令行程序  C:\>nslookup www.jb51.net Server:  www Address:  192.168.5.8 Non-authoritative answer: Name:    www.jb51.net Address:  202.103.69.64 这部分包括:  shi 使用 ipconfig /all 查看配置  使用 ipconfig /renew 刷新配置  对于启用 DHCP 的 Windows 95 和 Windows 98 客户,请使

  • Windows 服务控制管理器通信的命令行程序

    SC 是用于与服务控制管理器通信的命令行程序. 用法: sc <server> [command] [service name] <option1> <option2>... 选项 <server> 的格式为 "\\ServerName" 可以键入 "sc [command]"以获得命令的进一步帮助 命令: query-----------查询服务的状态, 或枚举服务类型的状态. queryex---------查询服

  • Linux平台php命令行程序处理管道数据的方法

    本文实例讲述了Linux平台php命令行程序处理管道数据的方法.分享给大家供大家参考,具体如下: linux下有一个强大的命令|(管道提示符).它的作用是将前一个命令的结果交给后一条命令并作为后一条命令的输入.而linux下的大多数命令 也都支持这种方式.可是当笔者写完一个php的命令行小程序以后,对于怎样获得前一个命令的结果却陷入了僵局.难道php不支持这样的操作? 于是又开始问google大叔.找来找去,都是说php的命令行模式是怎么回事儿,也没有和我想知道的问题相关的资料.难道是俺的关键字

  • 详解Node.js 命令行程序开发教程

    一种编程语言是否易用,很大程度上,取决于开发命令行程序的能力. Node.js 作为目前最热门的开发工具之一,怎样使用它开发命令行程序,是 Web 开发者应该掌握的技能. 下面就是我在它的基础上扩展的教程,应该是目前最好的解决方案了. 一.可执行脚本 我们从最简单的讲起. 首先,使用 JavaScript 语言,写一个可执行脚本 hello . #!/usr/bin/env node console.log('hello world'); 然后,修改 hello 的权限. $ chmod 755

  • Python编写带选项的命令行程序方法

    运行python程序时,有时需要在命令行传入一些参数.常见的方式是在执行时,在脚本名后直接追加空格分隔的参数列表(例如 python test.py arg0 arg1 arg2),然后在脚本中就可以通过sys.argv获取所有的命令行参数. 这种方式的优点是传参方便,参数获取简单:缺点是执行脚本时,必须知道参数的顺序,并且不能设置默认值,所有参数每次都必须传入. 还有一种命令行传参方式是通过带选项的方式进行传参(例如python test.py -p0=arg0 -p1=arg1). 这种方式

  • 如何从0开始用node写一个自己的命令行程序

    前言 什么是命令行程序呢?像我们常见的webpack,vue-cli都属于命令行程序. 本文将带你从0开始用node写一个自己的命令行程序,并发布到npm. 准备工作 我打算写一个统计个人代码提交量的命令行工具,起名 git-tool . npm地址见git-tool,GitHub地址见 git-tool . 1.在GitHub上新建一个项目git-tool. 2.克隆到本地进行开发. 3.执行npm init创建package.json文件. // 其他代码 "bin": { &qu

  • 用什么库写 Python 命令行程序(示例代码详解)

    一.前言 在近半年的 Python 命令行旅程中,我们依次学习了 argparse . docopt . click 和 fire 库的特点和用法,逐步了解到 Python 命令行库的设计哲学与演变.本文作为本次旅程的终点,希望从一个更高的视角对这些库进行横向对比,总结它们的异同点和使用场景,以期在应对不同场景时能够分析利弊,选择合适的库为己所用. 本系列文章默认使用 Python 3 作为解释器进行讲解.若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~ 二.设计理念 在讨论

  • 使用maven创建普通项目命令行程序详解

    目录 引言 下载并配置Maven maven项目的构建 通过Maven配置mysql.myBtais.myBtais-plus maven命令工具 引言 maven是一个软件项目管理工具,其核心是基于项目对象模型(POM project object model),即就是通过对其生成的pom.xml进行配置来管理项目的构建,报告和文档的.其功能包括两部分,一是对项目依赖jar包的管理,二是提供项目的构建.打包.测试等命令 下载并配置Maven 参考地址:百度 maven项目的构建 打开idea,

随机推荐