
正文
go语言之父完整视频 go语言创始人
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
golang命令行库Cobra的使用
写了2次才写完,内容很长,翻译了很久,内容来源于Cobra github介绍。翻译完也更全面的了解了Cobra,功能相当强大完善,各种使用的场景都考虑到了。另外也扩展了一些其它知识,比如 命令行玩法 , Levenshtein distance 等等。以下是正文:
Cobra提供简单的接口来创建强大的现代化CLI接口,比如git与go工具。Cobra同时也是一个程序, 用于创建CLI程序
Cobra是建立在结构的命令、参数和标志之上。
命令代表操作,参数和标志是这些行动的修饰符。
最好的应用程序就像读取句子。用户会知道如何使用本机应用程序,因为他们将理解如何使用它。
比如下面的例子, server 是命令, port 是标志:
在下面的命令,我们告诉Git克隆url地址bare
使用Cobra很简单。首先,使用 go get 安装最新版本
然后在你项目里引用Cobra
通常基于Cobra的应用程序将遵循下面的组织结构,当然你也可以遵循自己的接口:
在Cobra应用程序中,通常main.go文件非常空洞。它主要只干一件事:初始化Cobra。
Cobra提供自己的程序来创建你的程序并且添加你想要的命令。这是最简单的方式把Cobra添加到你的程序里。
这里 你能找到相关信息
使用Cobra,需要创建一个空的main.go文件和一个rootCmd文件。你可以选择在合适的地方添加额外的命令。
Cobra不需要特殊的构造函数。简单的就可以创建你的命令。
理想情况下你把这个放在在 app/cmd/root.go
你会另外定义标志和处理配置init()函数。
比如 cmd/root.go
你需要在main函数里执行root命令。
通常main.go文件非常空洞。它主要只干一件事:初始化Cobra。
其它的命令通常定义在cmd/目录下的自己文件内
如果你想创建一个version命令,你可以创建cmd/version.go文件,并在文件里这么写:
标志提供修饰符控制动作命令如何操作
当标志定义好了,我们需要定义一个变量来关联标志
'持久'表示每个在那个命令下的命令都将能分配到这个标志。对于全局标志,'持久'的标志绑定在root上。
Cobra默认只在目标命令上解析标志,父命令忽略任何局部标志。通过打开 Command.TraverseChildren Cobra将会在执行任意目标命令前解析标志
你同样可以通过 viper 绑定标志:
在这个例子中,永久的标记 author 被 viper 绑定, 注意 , 当用户没有给 --author 提供值, author 不会被赋值。
标记默认是可选的,如果你希望当一个标记没有设置时,命令行报错,你可以标记它为必须的
验证位置参数可以通过 Command 的 Args 字段。
内置下列验证方法
一个设置自定义验证的例子
在下面的例子,我们定义了3个命令。2个在顶级,一个(cmdTimes)是其中一个顶级命令的子命令。在这个例子里,由于没有给 rootCmd 提供 Run ,单独的root是不能运行的,必须要有子命令。
我们仅为一个命令定义了标记。
更多关于flags的文档可以在 找到
更完整大型程序的例子, 可以查看 Hugo .
当你的程序有子命令时,Cobra 会自动给你程序添加help命令。当你运行‘app help’,会调用help命令。另外,help同样支持其它输入命令。例如,你有一个没有任何其它配置的命令叫‘create’,当你调用‘app help create’ Corbra 将会起作用。
下面的输入是 Cobra 自动生成的。除了命令和标志的定义,其它不再需要。
help 就跟其它命令一样,并没有特殊的逻辑或行为。事实上,你也可以提供你自己help如果你想的话。
你能为默认的命令,提供你自己的help命令或模板。使用下面的方法:
后2个也将适用于任何子命令
当用户提供无效的标记或命令,Cobra 将会返回 用法 。
你可能从上面的帮助意识到,默认的帮助将被嵌入到用法里然后作为输出。
你能提供你自己的用法函数或模板给 Cobra 使用。
比如帮助,方法和模板都可以重写。
如果Version字段设置到了根命令,Cobra 会提供了一个顶层 ‘--version’标记。运行带上‘--version’标记的程序,将会按照模板版本信息。模板可以通过 cmd.SetVersionTemplate(s string) 方法修改
在命令运行前或运行后,再运行方法非常容易。 PersistentPreRun 和 PreRun 方法将会在 Run 之前执行。 PersistentPostRun 和 PostRun 方法将会在 Run 之后执行。 Persistent*Run 方法会被子命令继承,如果它们自己没有定义的话。这些方法将按照下面的属性执行:
下面的例子,2个命令都使用了上面的特性。当子命令执行的时候,它将执行根命令的 PersistentPreRun ,但不会执行根命令的 PersistentPostRun :
输出:
Cobra 会自动输出建议,当遇到“unknown command”错误时。这使得当输入错误时, Cobra 的行为类似 git 命令。例如:
建议会基于注册的子命令自动生成。使用了 Levenshtein distance 的实现。每一个注册的命令会匹配2个距离(忽略大小写)来提供建议。
如果你希望在你的命令里,禁用建议或虚弱字符串的距离,使用:
或
你可以通过 SuggestFor 来给命令提供明确的名词建议。这个特性允许当字符串不相近,但是意思与你的命令相近,别切你也不想给该命令设置别名。比如:
Cobra 可以基于子命令,标记,等生成文档。以以下格式:
Cobra 可以生成一个bash-completion文件。如果你给命令添加更多信息,这些completions可以非常强大和灵活。更多介绍在 Bash Completions 。
相关问答
Q1: 《UN-GO》免费在线观看完整版高清,求百度网盘资源
《UN-GO》百度网盘高清资源免费在线观看:
链接:
?pwd=7ym7 提取码: 7ym7
《UN-GO》
导演: 水岛精二、京极尚彦、浅井义之、木村隆一、清水久敏、黑川智之、末田宜史
编剧: 会川升
主演: 胜地凉、丰崎爱生、山本希望、本田贵子、入野自由、三木真一郎、川岛得爱、户松遥、诹访部顺一、内山昂辉、岛村侑、滨田贤二、高口公介
类型: 动画
制片国家/地区: 日本
语言: 日语
上映日期: 2011-10-13(日本)
集数: 11
片长: 20分钟
又名: 因果侦探、因果日记
结城新十郎(胜地凉 配音)是一名侦探,在得力助手因果(丰崎爱生 配音)的帮助下,破解了一个又一个神秘诡异的案件。从表面上看来,因果是一个俊俏的少年,但他的真身是一个能够吞噬灵魂的神秘女人。而所发生的一连串案件,似乎和因果特殊的能力脱不了干系。
新十郎的竞争对手海胜麟六(三木真一郎 配音),经常将父亲麟六的情报透露给新十郎的可爱少女梨江(山本希望 配音),强势能干的检察官虎山泉(本田贵子 配音),警察局课长速水星玄(入野自由 配音),一个又一个亦敌亦友的角色出现在了新十郎的周围,而在他们交织的背影之后,隐藏了一个惊人的秘密。
Q2: 软件开发如何开始学习?
软件学校的方法go语言之父完整视频: 1、熟悉电脑的基本操作和基本的软件安装: 首先,要学习软件开发步骤,最基本的是要会操作电脑,然后是安装各种软件,熟悉打字法,可以在键盘上熟练打出26个字母,这个是最基本的。通过去网站下载C语言编程的视频学习,并制定计划,按部就班去学习。同时自己也可以在网上买一下计算机课程的书本。 2、获取学习途径,视频或者课本学习: 看go语言之父完整视频了视频教程和书本知识之后,最重要的环节就是自己动手去编写代码。首先在电脑安装好几款编程必备的软件,,这款软件主要编写代码,可以支持C还可以编写Html静态网页。 数据库服务器软件,这款软件主要用来学习数据库知识的。 3、学会安装编程工具,并自己上机实践: 安装好编程软件之后,接着就是上机实践,首先在软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。 软件设计思路和方法的一般过程,包括设计软件
go语言之父完整视频的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言创始人、go语言之父完整视频的信息别忘了在本站进行查找喔。






