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)
	}
}
相关推荐
玖釉-1 分钟前
C++ 硬核剖析:if 语句中的“双竖杠” || 到底怎么运行的?
开发语言·c++
满满和米兜3 分钟前
【Java基础】- 集合-HashSet与TreeSet
java·开发语言·算法
ltl10 分钟前
哈希表内部:开放寻址、链式、Robin Hood
后端
zhangzeyuaaa12 分钟前
Python推导式(Comprehensions)
开发语言·python
m0_7167652312 分钟前
数据结构三要素、时间复杂度计算详解
开发语言·数据结构·c++·经验分享·笔记·算法·visual studio
卷心菜狗13 分钟前
Python进阶基础--面向对象编程(OOP)
开发语言·python
开心码农1号14 分钟前
RabbitMQ 生产运维命令大全
linux·开发语言·ruby
网安INF15 分钟前
数据结构第二章复习:线性表
java·开发语言·数据结构
aq553560018 分钟前
Laravel10.X核心特性全解析
java·开发语言·spring boot·后端