2022 GO开发人员调查表明,构建CLI应用程序是第二大流行的GO 的应用,令人印象深刻的多数超过60%的受访者表达他们的喜好在Go中写作。
这些数据的意思是,如果您想成为一名富有成效的GO开发人员,则需要学习如何构建出色且用户友好的CLI工具。但是,在您开始潜入os.Args
,flags
软件包和Cobra
框架的深处之前,至关重要的是,您必须拥有一个心理模型,以了解命令行应用程序的word和用于描述它们的术语。
在本文中,您将深入研究CLI语法,揭示其复杂性,并授权您置信。。
自然语言比较
自然语言比较是一个术语,用于描述用户通过用熟悉的人类语言表达意图来描述用户与CLI应用程序互动的能力,该语言允许更直观和用户友好的体验。
COBRA框架是使用GO编写的最流行的CLI框架,提出了其概念文档中的以下模式。
在此示例中:APPNAME
是可执行文件,NOUN
是 grognm ,VERB
是命令,而ADJECTIVE
是一个选项,也称为标志。
如果您在任何时间长的时间内都使用了CLIS,您会注意到并非每个CLI都遵循这种确切的模式,自然语言比较的另一个常见实现是动词名词,动词名词PowerShell是一种流行的脚本语言使用。话虽如此,名词动词是克里斯的一个更为普遍的模式。
现在,您已经开始建立使用自然语言建立CLI的心理模型。让我们更深入地了解到底是什么。
理解论点
论点是命令行动的名词或事物。
它们是调用命令时向命令提供数据或指令的值。影响命令行为或确定执行的任务。
例如,在命令touch file.txt
中,“ touch”是命令,“ file.txt”是参数或名词,指示要对其进行作用。
注意:“参数”和“参数”有时会互换使用,但它们具有独特的含义。
参数是在命令执行期间传递的值,而参数是函数或方法中定义的变量。
探索命令
命令是 - 动词 - CLI应用程序中的主要操作。
您通过键入可执行文件的名称,然后是参数或options \ flags。这允许用户执行特定的操作。
例如,以下命令每个代表可以在相应CLI应用程序中执行的不同操作。
ls
[Command==Verb]
mkdir
[Command==Verb]
git commit
[Command] [Verb]
对于像ls
和mkdir
这样的简单命令行工具,命令本身的名称是动词。
但是,像git
和npm
这样的更复杂的CLIS并非如此。随着更复杂的CLIS,动词转移到子命令。
子命令在CLI中创建一个层次结构,将相关操作分组在一起。
他们允许用户根据所使用的上下文或域进行导航和访问不同的功能集。
例如,在git
中,有一些子命令,例如“ git commit”,“ git pull”或“ git分支”。
> git commit
> git pull
> git branch
每个子命令都集中在整体“ git”命令中版本控制的特定方面。
理解标志
标志(也称为选项)修改命令或子命令的行为。
他们充当形容词,使用户能够通过指定特定设置,启用或禁用功能或提供其他信息来自定义命令的操作。
标志通常由前缀字符(短flag)或表示其目的的单词(长字)表示。
go -v #short-flag
go --version #long-flag
在上述命令中,-v
和--version
标志指示go
命令返回版本信息。
注意:仅为最常用的标志保留短标志。并非每个选项或标志都会获得分配给它的简称。
结论
在这篇文章中,您探讨了自然语言比较的组成部分:参数,命令和标志。
参数代表命令作用的名词或实体,而命令本身是CLI中执行的动词或动作。标志,充当形容词,修改命令或子命令的行为,允许用户自定义其操作。
了解这些组件对于构建有效且用户友好的CLI应用程序至关重要。通过利用自然语言比较,CLI开发人员可以创建直观且易于访问的接口,以简化命令执行并增强整体用户体验。