简介:
Cobra是一个用来创建强大的现代CLI命令行的GoLang库,同时自带生成程序相关文件的功能。
使用场景:如果你的项目里面,需要用到类似windows里面的cmd窗口这样的交互,或者像mac的终端这样的交互,Cobra将是你很好的选择。
go get -v github.com/spf13/cobra/cobra
cobra init demo
他会在GOPATH
目录下面生成项目文件。
其文件结构如下:
▾ demo
▾ cmd/
root.go
main.go
cobra 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.go
introduce
这个模块就做一个简单的自我介绍。代码如下:
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应该是比较好的选择。