golang Cobra 快速使用

Go 复制代码
package main

import(
	"fmt"
	"os"
	"github.com/spf13/cobra"
)

func f1(){
  fmt.Printf("这是主命令的运行函数 ")
}
func f2(){
	fmt.Println("这是一个子命令的运行函数")
}


func main(){



	var rootCmd = &cobra.Command{
		Use: "myapp",
		Short:"一个主CLI程序帮助",
		Long: "这是一个Cobr构建的主CLi帮助信息",
		Run: func(cmd *cobra.Command, args []string){
		
			f1()
		}, 
	}

		var subCmd  = &cobra.Command{
		Use: "subcommand",  //myapp 主CLI -h时候打印的内容
		Short:"这是一个子命令帮助信息",
		Long: "这是一个Cobra 构建的子CLI应用程序帮助信息", //
		Run: func(cmd *cobra.Command, args []string){
		  f2()
		}, 
	}

     //子命令添加到主命令里
	 rootCmd.AddCommand(subCmd)

      //打印错误
	  err := rootCmd.Execute()
	  if err != nil {
       os.Exit(1)
	 fmt.Println(err)
	}
}

添加 Flag 传值

Go 复制代码
package main

import (
	"fmt"
	"github.com/spf13/cobra"
	"os"
)



func main() {

	var greeting string
	var verbose bool

	var rootCmd = &cobra.Command{
		Use:   "myapp",
		Short: "一个主CLI程序帮助",
		Long:  "这是一个Cobr构建的主CLi帮助信息",
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Printf("这是主命令的运行函数,gretting=%s,verbose=%v\n", greeting, verbose)

		},
	}
  
	rootCmd.PersistentFlags().StringVarP(&greeting, "gretting", "g", "Hello", "欢迎词")
	rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "详细模式")

	var subCmd = &cobra.Command{
		Use:   "subcommand",
		Short: "这是一个子命令帮助信息",
		Long:  "这是一个Cobra 构建的子CLI应用程序帮助信息",
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Println("这是一个子命令的运行函数,gretting=%s,verbose=%v\n", greeting, verbose)
		},
	}
	rootCmd.AddCommand(subCmd)

	err := rootCmd.Execute()
	if err != nil {
		os.Exit(1)
		// fmt.Println(err)
	}
}

添加参数传值

Go 复制代码
package main

import (
	"fmt"
	"github.com/spf13/cobra"
	"os"
)



func main() {

	
	var rootCmd = &cobra.Command{
		Use:   "myapp",
		Short: "一个主CLI程序帮助",
		Long:  "这是一个Cobr构建的主CLi帮助信息",
		Run: func(cmd *cobra.Command, args []string) {
	  fmt.Printf("欢迎使用 myapp:参数 %v\n",args)  //args是切片,可以用args[0]取出第一个参数

		},
	}
  
	// rootCmd.PersistentFlags().StringVarP(&greeting, "gretting", "g", "Hello", "欢迎词")
	// rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "详细模式")


	err := rootCmd.Execute()
	if err != nil {
		os.Exit(1)
		// fmt.Println(err)
	}
}
相关推荐
2201_757830874 分钟前
条件分页查询
java·开发语言
sdguy11 分钟前
在 Windows 上正确安装 OpenAI Codex CLI:一次完整的 pnpm 全局环境修复实录
后端·openai
努力学习的小廉12 分钟前
【QT(六)】—— 常用控件(三)
开发语言·qt
Z.yping18 分钟前
qt语言家一键更新或发布多个模块且多个国家的语言
开发语言·qt·restful
MSTcheng.21 分钟前
【C++】set / multiset 保姆级教程:从底层原理到实战应用!
开发语言·c++·set
历程里程碑21 分钟前
C++ 16:C++11新特化
c语言·开发语言·数据结构·c++·经验分享
巴拉巴拉~~24 分钟前
KMP 算法通用步进器组件:KmpStepperWidget 横向 / 纵向 + 匹配进度 + 全样式自定义
java·服务器·开发语言
weixin_3077791325 分钟前
赋能插件,驱动图表:Jenkins ECharts API插件详解
运维·开发语言·自动化·jenkins·echarts
IMPYLH26 分钟前
Lua 的 Math(数学) 模块
开发语言·笔记·lua
shiwulou128 分钟前
PbRL | 近两年论文阅读的不完全总结
后端