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)
	}
}
相关推荐
兆。几秒前
掌握 PyQt5:从零开始的桌面应用开发
开发语言·爬虫·python·qt
尘浮生3 分钟前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
尚学教辅学习资料11 分钟前
基于SpringBoot的医药管理系统+LW示例参考
java·spring boot·后端·java毕业设计·医药管理
明月看潮生23 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
明月看潮生29 分钟前
青少年编程与数学 02-003 Go语言网络编程 14课题、Go语言Udp编程
青少年编程·golang·网络编程·编程与数学
南宫理的日知录34 分钟前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
逊嘘1 小时前
【Java语言】抽象类与接口
java·开发语言·jvm
Half-up1 小时前
C语言心型代码解析
c语言·开发语言
Source.Liu1 小时前
【用Rust写CAD】第二章 第四节 函数
开发语言·rust
monkey_meng1 小时前
【Rust中的迭代器】
开发语言·后端·rust