Cobra既是用于创建强大的现代CLI应用程序的库,也是用于生成应用程序和命令文件的程序。
go run main.go [-flag1 {参数1} ] [-flag2 {参数2} ]
例如:
go run main.go push -t "123"
var rootCmd = &cobra.Command{
Use: "rootCmd",
Short: "rootCmd",
Long: "rootCmd xx xx xx",
}
func init() {
rootCmd.AddCommand(newXCommand())
}
//添加命令
func newXCommand(*cobra.Command) {
var podName string
s := &cobra.Command{
Use: "x",
Short: "v",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println(ctx.Version)
},
}
//添加参数
s.Flags().StringVarP(&podName, "pod", "p", options.PodName, "Pod name")
}
定义string 的参数,参数为参数名以及默认值和使用方式。
func (f *FlagSet) String(name string, value string, usage string) *string
定义string 的参数,参数为参数名、简写方式以及默认值和使用方式。
func (f *FlagSet) StringP(name, shorthand string, value string, usage string) *string
定义string型数组的参数,参数为参数承接的变量,参数名,默认值和用法说明,数组的输入按照,
「逗号」隔开
func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) *string
定义string型数组的参数,参数为参数承接的变量,参数名,简写参数,默认值和用法说明,数组的输入按照,
「逗号」隔开
func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []string, usage string)
输入格式示例:
--ss="v1,v2" -ss="v3"
结果为:
[]string{"v1", "v2", "v3"}
总结起来就是,带Var
的都是提供一个变量的地址用于承接控制台输入的参数的参数值,而带P
的方法则是可以比不带P
的多设置一个简写的参数名