go语言编写命令行程序 go语言执行cmd命令( 四 )


您可以提供自己的使用函数或模板供Cobra使用 。与帮助一样,函数和模板也可以通过公共方法重写:
如果在root命令上设置了version字段,Cobra会添加一个顶级的'--version'标志 。运行带有“-version”标志的应用程序将使用版本模板将版本打印到标准输出 。可以使用cmd.SetVersionTemplate(s string)函数自定义模板 。
可以在命令的主运行函数之前或之后运行函数 。PersistentPreRun和PreRun函数将在运行之前执行 。PersistentPostRun和PostRun将在运行后执行 。如果子函数不声明自己的函数,则它们将继承Persistent*Run函数 。这些函数按以下顺序运行:
输出:
当发生“未知命令”错误时,Cobra将打印自动建议 。这使得Cobra在发生拼写错误时的行为类似于git命令 。例如:
基于注册的每个子命令和Levenshtein距离的实现,建议是自动的 。匹配最小距离2(忽略大小写)的每个已注册命令都将显示为建议 。
如果需要在命令中禁用建议或调整字符串距离,请使用:
or
您还可以使用SuggestFor属性显式设置将为其建议给定命令的名称 。这允许对在字符串距离方面不接近的字符串提供建议,但在您的一组命令中是有意义的,并且对于某些您不需要别名的字符串 。例子:
Cobra可以基于子命令、标志等生成文档 。请在 docs generation文档 中阅读更多关于它的信息 。
Cobra可以为以下shell生成shell完成文件:bash、zsh、fish、PowerShell 。如果您在命令中添加更多信息,这些补全功能将非常强大和灵活 。在 Shell Completions 中阅读更多关于它的信息 。
Cobra is released under the Apache 2.0 license. SeeLICENSE.txt
go后为什么直接加某个方向Go语言是一种开源、跨平台的编程语言,它的语法简洁,容易上手,可以快速构建可靠、可维护、可扩展的应用程序 。Go语言支持多种编程范式,可以直接编写简单的命令行程序,也可以编写复杂的Web应用程序 。Go语言支持多种编程范式,其中最常用的是面向对象编程,它可以帮助开发者快速构建可靠、可维护、可扩展的应用程序 。Go语言的另一个优点是它支持并发编程 , 可以帮助开发者更快地构建多线程应用程序,从而提高程序的性能 。Go语言还支持自动内存管理,可以帮助开发者更轻松地管理内存,从而提高程序的可靠性 。总之 , Go语言拥有众多优点 , 可以帮助开发者更快更好地构建可靠、可维护、可扩展的应用程序 。
写命令行应用程序什么不可或缺?Go可以这样处理命令行参数 Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单 。
如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数 。
将上面的代码执行go build -o "args_demo"编译之后,执行:
os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称 。
本文介绍了flag包的常用函数和基本用法 , 更详细的内容请查看官方文档 。
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration 。
有以下两种常用的定义命令行flag参数的方法 。
基本格式如下:
flag.Type(flag名, 默认值, 帮助信息)*Type 例如我们要定义姓名、年龄、婚否三个命令行参数 , 我们可以按如下方式定义:
需要注意的是,此时name、age、married、delay均为对应类型的指针 。
基本格式如下: flag.TypeVar(Type指针, flag名, 默认值, 帮助信息) 例如我们要定义姓名、年龄、婚否三个命令行参数 , 我们可以按如下方式定义:

推荐阅读