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)
	}
}
相关推荐
色空大师4 分钟前
23种设计模式
java·开发语言·设计模式
Bruce小鬼17 分钟前
QT文件基本操作
开发语言·qt
2202_7544215422 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热29 分钟前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee
懷淰メ39 分钟前
PyQt飞机大战游戏(附下载地址)
开发语言·python·qt·游戏·pyqt·游戏开发·pyqt5
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
宁静@星空1 小时前
006-自定义枚举注解
java·开发语言
hummhumm1 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
武子康1 小时前
Java-07 深入浅出 MyBatis - 一对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis·springboot
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode