
简介:
Cobra是一个用来创建强大的现代CLI命令行的GoLang库,同时自带生成程序相关文件的功能。
使用场景:如果你的项目里面,需要用到类似windows里面的cmd窗口这样的交互,或者像mac的终端这样的交互,Cobra将是你很好的选择。
go get -v github.com/spf13/cobra/cobracobra init demo 他会在GOPATH目录下面生成项目文件。
其文件结构如下:
▾ demo
▾ cmd/
root.go
main.gocobra add test这时他会在cmd下面创建一个test.go文件。文件夹结构就变成这样了:
▾ demo
▾ cmd/
root.go
test.go
main.go你可以先build再运行,也可以直接run都可以的。
我这里先编译再运行:
go build .
./demo输出的内容应该是这样的:

我们在工程下面新建一个introduce文件夹,在下面再建一个introduce.go文件,文件结构就变成这样了:
▾ demo
▾ cmd/
root.go
test.go
▾ introduce/
introduce.go
main.gointroduce这个模块就做一个简单的自我介绍。代码如下:
package introduce
import "fmt"
func Show(name string, age int) {
fmt.Printf("My name is %s, My age is %d \n",name,age)
}我们打开main.go文件,发现基本什么都没写,直接导入cmd模块然后执行Execute方法。
打开cmd/root.go文件发现他做了一系列的预备处理,我们只需要修改两个地方就好了。
1、添加参数

声明两个全局变量

我们在init方法下面添加我们需要的参数。
2、当调用时做下逻辑判断

我这里就做了一个很简单的逻辑判断,当name这个变量不为空时就掉我们自己的introduce模块。
当然项目里面这里应该要提出来写一大堆的逻辑判断。
好了此时我运行下:

---init---
---run---部分是我为了让大家知道他这个程序的方法调用顺序,他是先去的init再去run方法,这样流程就是先去取输入的参数,然后再去执行我们添加的逻辑代码。
现在我们去调用下我们添加的模块:

好了,这篇文章就写到这里,如果你的项目里面需要用到类似这种命令行交互的模块,Cobra应该是比较好的选择。