Go语言cobra库学习笔记——从入门到精通

面向对象思考与 golang cobra 库实现原理 本文不打算纠结 golang 有哪些面向对象特性,仅关注面向对象的思想如何在 golang 中应用,让我们轻松一些写出类似 cobra 中 comamnd.go 这样易于使用、可扩展的程序。 阅读详情

Go语言中,我们可以使用cobra很方便的进行命令行工具的开发,kubelet命令就是使用这个库开发的。在这片博客中,我将会总结一下我学习cobra库的笔记,希望对你有帮助。点击这里可以进入cobra官方说明。

一、安装cobra

1. 安装cobra

go get github.com/spf13/cobra/cobra
将cobra下载完成后,GOPATH/bin目录会生成一个cobra可执行程序,通过这个程序我们可以初始化一个cobra代码框架。

2. 初始化一个项目

我们可以通过下面的命令初始化项目:
mkdir -p newApp && cd newApp
cobra init --pkg-name github.com/spf13/newApp
或者
cobra init --pkg-name github.com/spf13/newApp path/to/newApp

上面是官方的示例,需要注意的是–pkg-name后面接的是你要编写的命令的名称,不一定是你新建目录的名称。
这里我举个例子,初始化一个time命令:

$ cobra init --pkg-name time
Your Cobra applicaton is ready at
D:\GOCODE\cobraStudy

初始化之后可以看到,cobra命令在项目目录底下创建了开发框架:
在这里插入图片描述
root.go代码中有一个rootCmd变量:

  • Use: 命令。
  • Short: 命令的简短描述。
  • Long: 命令的详细描述,在帮助命令,如$ [appName] -h或者$ [appName] [command] -h时会显示此程序和此命令的字符串。
  • Run: 命令执行入口,函数主要写在这个模块中。

函数initConfig(): 用来初始化viper配置文件位置,监听变化。
函数init(): 定义flag和配置处理。

我们可以编译一下:
$ go build -o time main.go
然后执行time命令:

$ ./time
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.

因为我们开没有进行开发,因此我们可以看到当前time命令只有一些帮助信息。

3.通过cobra命令添加命令

添加命令之前我们需要理解cobra的三个概念:

  • commands
  • arguments
  • flags

其中commands代表行为,arguments代表数值,flags代表对行为的改变。
执行命令行程序时的一般格式为:
[appName] [command] [arguments] --[flag]
这里我们在上面创建的项目基础上添加命令:

$ cobra add show
show created at D:\GOCODE\cobraStudy

此时,cmd目录会多一个show.go的文件,我们可以在这个文件中定义show具体执行的操作,这里的show就是上面说的command。
我们现在编译一下代码:

$ go build -o time main.go

执行命令,我们可以看到time命令的帮助信息,在usage中我们可以看到,当前有两个command一个是默认的help另一个就是我们刚才创建的show,Flags也有两个,这是初始化的时候自带的,后面我们可以自己进行修改。

$ ./time
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.

Usage:
  time [command]

Available Commands:
  help        Help about any command
  show        A brief description of your command

Flags:
      --config string   config file (default is $HOME/.time.yaml)
  -h, --help            help for time
  -t, --toggle          Help message for toggle

Use "time [command] --help" for more information about a command.

4.为 Command 添加选项(flags)

选项(flags)用来控制 Command 的具体行为。根据选项的作用范围,可以把选项分为两类:

  • persistent
  • local

1)对于 persistent 类型的选项,既可以设置给该 Command,又可以设置给该 Command 的子 Command。对于一些全局性的选项,比较适合设置为 persistent 类型,比如控制输出的 verbose 选项:
我们创建一个test命令:

$ cobra add test
test created at D:\GOCODE\cobraStudy

在test.go文件的init()函数中我们可以通过下面的方式给test命令添加flags:

	// 下面定义了一个Flag foo, foo后面接的值会被赋值给Foo
	Foo = testCmd.PersistentFlags().String("foo", "", "A help for foo")
	// 下面定义了一个Flag print ,print后面的值会被赋值给Print变量
	testCmd.PersistentFlags().StringVar(&Print, "print", "", "print")
	// 下面定义了一个Flag show,show默认为false, 有两种调用方式--show\-s,命令后面接了show则上面定义的show变量就会变成true
	testCmd.PersistentFlags().BoolVarP(&show, "show", "s", false, "show")

需要注意的是,上例中我创建的Foo、Print、show都是全局变量,如果没有创建,代码会执行不成功。
上面是常见的定义方式,更多定义方式请参考原码。
我们修改一下Run后面的函数:

Run: func(cmd *cobra.Command, args []string) {
		if show {
			fmt.Println("Show")
		}
		fmt.Println("Print:", Print)
		fmt.Println("Foo:", *Foo)
	},

编译后执行命令:

$ ./time test --foo hello -s --print world
Show
Print: world
Foo: hello

2)local 类型的选项只能设置给指定的 Command:

// 下面定义了一个Flag show,show默认为false, 有两种调用方式--show\-s,命令后面接了show则上面定义的show变量就会变成true
	showL = *testCmd.Flags().BoolP("showL", "S", false, "show")
	// 下面定义了一个Flag print ,print后面的值会被赋值给Print变量
	testCmd.Flags().StringVar(&PrintL, "printL", "", "print")
	// 下面定义了一个Flag foo, foo后面接的值会被赋值给Foo
	FooL = testCmd.Flags().String("fooL", "", "A help for foo")

默认情况下的选项都是可选的,但一些用例要求用户必须设置某些选项,这种情况 cobra 也是支持的,通过 Command 的 MarkFlagRequired 方法标记该选项即可:

show = *testCmd.Flags().BoolP("show", "s", false, "show")
// 设置使用test的时候后面必须接show
_ = testCmd.MarkFlagRequired("show")
5.命令行参数(arguments)

首先我们来搞清楚命令行参数(arguments)与命令行选项(flags/options)的区别。以常见的 ls 命令来说,其命令行的格式为:

$ ls --help
Usage: ls [OPTION]... [FILE]...

其中的 OPTION 对应本文中介绍的 flags,以 - 或 – 开头;而 FILE 则被称为参数(arguments)或位置参数。一般的规则是参数在所有选项的后面,上面的 … 表示可以指定多个选项和多个参数。

cobra 默认提供了一些验证方法:

  • NoArgs - 如果存在任何位置参数,该命令将报错 ArbitraryArgs - 该命令会接受任何位置参数 OnlyValidArgs
  • 如果有任何位置参数不在命令的 ValidArgs 字段中,该命令将报错 MinimumNArgs(int) - 至少要有 N 个位置参数,否则报错 MaximumNArgs(int)
  • 如果位置参数超过 N 个将报错 ExactArgs(int)
  • 必须有 N个位置参数,否则报错 ExactValidArgs(int) 必须有 N 个位置参数,且都在命令的 ValidArgs 字段中,否则报错
  • RangeArgs(min, max) - 如果位置参数的个数不在区间 min 和 max 之中,报错

比如要让 Command cmdTimes 至少有一个位置参数,可以这样初始化它:

// testCmd represents the test command
var testCmd = &cobra.Command{
	Use: "test",
	// 定义arguments数量最少为1个
	Args:  cobra.MinimumNArgs(1),
	Short: "short usage",
	Long:  `Long usage`,
	Run: func(cmd *cobra.Command, args []string) {
		if show {
			fmt.Println("Show")
			fmt.Println("Print:", Print)
			fmt.Println("Foo:", *Foo)
		}
	},
}

二、使用cobra开发一个命令

1. 这里我们以一个time命令为例,讲解如何使用cobra开发一个命令

功能功能说明:
(1)show 查看当前时间
(2)parse 指定时间格式 --format,parse为show的子命令。

2.实现show命令

在第一部分我们已经添加了show命令,现在我们修改show.go文件。
1)首先我们实现输出当前时间的功能。
下面是初始化的内容:

// showCmd represents the show command
var showCmd = &cobra.Command{
	Use:   "show",
	Short: "A brief description of your command",
	Long: `A longer description that spans multiple lines and likely contains examples
and usage of using your command. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Println("show called")
	},
}

命令实现的功能由Command.Run控制,我们定义一个函数,输出当前时间:

// ShowTime 显示当前时间
func ShowTime(cmd *cobra.Command, args []string) {
	fmt.Println(time.Now())
}

然后将函数给Command.Run赋值:

// showCmd represents the show command
var showCmd = &cobra.Command{
	Use:   "show",
	Short: "A brief description of your command",
	Long: `A longer description that spans multiple lines and likely contains examples
and usage of using your command. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
	Run: ShowTime, // 这里改为函数名称
}

2)修改help命令。
help命令有两个,一个是short一个是lang,很明显short命令用来定义简短的说明,lang命令用来定义详细说明,下面我们修改show命令的help:

// showCmd represents the show command
var showCmd = &cobra.Command{
	Use:   "show",
	Short: "Displays the current time",
	Long: `You can use the time show command to view the current time. For example:

$ ./time show
2020-07-03 15:01:59.6035666 +0800 CST m=+0.013998501`,
	Run: ShowTime,
}

修改完成,我们编译代码:

$ go build -o time main.go

执行time命令,我们可以看到show命令后面的说明变成了我们定义的简短说明:

$ ./time
A longer description that spans multiple lines and likely contains
examples and usage of using your application. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.

Usage:
  time [command]

Available Commands:
  help        Help about any command
  show        Displays the current time

Flags:
      --config string   config file (default is $HOME/.time.yaml)
  -h, --help            help for time
  -t, --toggle          Help message for toggle

Use "time [command] --help" for more information about a command.

我们再执行time show --help命令,可以看到现在展示了show命令的详细说明:

$ ./time show --help
You can use the time show command to view the current time. For example:

$ ./time show
2020-07-03 15:01:59.6035666 +0800 CST m=+0.013998501

Usage:
  time show [flags]

Flags:
  -h, --help   help for show

Global Flags:
      --config string   config file (default is $HOME/.time.yaml)

3.实现parse命令

1)添加parse命令
下面的命令通过-p指定parse为show的子命令,注意命令后面接Cmd。

$ cobra add parse -p showCmd
parse created at D:\GOCODE\cobraStudy

2)编辑parse命令

// parseCmd represents the parse command
var parseCmd = &cobra.Command{
	Use:   "parse",
	Short: "Format current time",
	Long: `Format current time. For example:

time show parse --format "2006:01:02 15:04:05".`,
	Run: func(cmd *cobra.Command, args []string) {
		// 输出格式化之后的时间
		fmt.Println(time.Now().Format(format))
	},
}
var format string

func init() {
	showCmd.AddCommand(parseCmd)
	parseCmd.Flags().StringVarP(&format, "format", "f", "", "Help message for toggle")
	// 这里指定format flag为必须
	_ = parseCmd.MarkFlagRequired("format")
}

编译命令并执行:

$ ./time show parse --format="2006:01:02 15:04:05"
2020:07:03 17:04:05
4.修改time命令的配置信息

修改root.go文件,删除没有用的代码:

// rootCmd represents the base command when called without any subcommands
var rootCmd = &cobra.Command{
	Use:   "time",
	Short: "Show Current Time",
	Long: `Show Current Time. For example:

With this command, you can view the current time or customize the time format.`,
}
func init() {
	cobra.OnInitialize(initConfig)
}

测试一下命令:

random@random-wz MINGW64 /d/GOCODE/cobraStudy
$ ./time --help
Show Current Time. For example:

With this command, you can view the current time or customize the time format.

Usage:
  time [command]

Available Commands:
  help        Help about any command
  show        Displays the current time

Flags:
  -h, --help   help for time

Use "time [command] --help" for more information about a command.

random@random-wz MINGW64 /d/GOCODE/cobraStudy
$ ./time show
2020-07-03 17:10:04.8230742 +0800 CST m=+0.014971101

random@random-wz MINGW64 /d/GOCODE/cobraStudy
$ ./time show parse
Error: required flag(s) "format" not set
Usage:
  time show parse [flags]

Flags:
  -f, --format string   Help message for toggle
  -h, --help            help for parse

required flag(s) "format" not set

random@random-wz MINGW64 /d/GOCODE/cobraStudy
$ ./time show parse -f "15:04:05"
17:10:25

go命令行库-cobra Cobra 是一个用于创建强大的现代 CLI 应用程序的库。几乎包含了你所需要的所有元素。 Cobra 用于许多 Go 项目,例如Kubernetes、Docker、GitHub CLI、Hugo等等。 阅读详情

相关推荐

Golang:Cobra安装与使用

引子最近在做一个基于Golang的CLI程序,索性便将自己探索出来的经验写下与诸位分享,如果更好的方法也希望大家能告知,共同进步Cobra安装大部分教程都是直接告诉我们,我们只需要在有go的环境下,输入$ go get -v github.com/spf13/cobra/cobra便可以顺顺利利的安装。然而,现实与理想还是有差距的。许多同学都因为某些被墙的链接而停在了某一步骤。解决方法当然是有的。

Seven_Anon的博客 5567

[问题已处理]-mac安装cobra失败

mac golang

爷来辣的博客 1115

Golang Cobra的使用

在阅读Docker源码时发现,Docker命令行是使用cobra库创建的,为了更好的理解源码,先来熟悉一下Cobra。 Cobra既是一个用来创建强大的现代命令行应用的库,又是一个用来生成应用和命令文件的脚手架。 很多流行的Go项目都使用Cobra,例如Kubernetes, Hugo, rkt, etcd, Moby (former Docker),&nb...

ミ安之偌素 913

Go语言命令行工具cobra

Go语言命令行工具cobra

YIYIYI 5158

Golang Cobra 框架详解:手把手教你构建强大命令行工具

在云计算、微服务和DevOps盛行的技术时代,命令行工具(CLI)作为人与系统交互的核心载体,其重要性与日俱增。Golang凭借高效的并发模型和跨平台特性,成为CLI开发的首选语言之一。Cobra框架作为Golang生态中CLI开发的事实标准,提供了从命令结构设计到配置管理、帮助文档生成的全流程解决方案。核心架构:命令树结构设计与生命周期管理功能实现:标志(Flag)、参数(Argument)、配置解析的最佳实践实战应用:从项目初始化到复杂CLI工具的完整开发流程。

AI Agent Harness Engineering 1060

别再纠结了!手把手教你根据项目需求选对目标检测框架(MMDetection/Detectron2/YOLOv8实战对比)

本文详细对比了三大目标检测框架MMDetection、Detectron2和YOLOv8的适用场景与实战技巧,帮助开发者根据项目需求精准选型。从毕业设计到工业落地,分析不同场景下的核心需求与框架优势,提供决策树和避坑指南,确保技术选型与项目目标高度匹配。

weixin_30342209的博客 554

Go语言命令行参数及cobra使用教程

可以指定位置参数的验证:NoArgs- 如果有任何位置参数,则报告错误。ArbitraryArgs- 接受任意数量的参数。MinimumNArgs(int)- 如果提供的位置参数少于 N 个,则报告错误。MaximumNArgs(int)- 如果提供了超过 N 个位置参数,则报告错误。ExactArgs(int)- 如果位置参数不完全是 N 个,则报告错误。RangeArgs(min, max)- 如果参数数不在min和max之间,则报告错误。

大河之犬的博客 3121

跟着Synopsys报告,一步步拆解车规芯片FMEDA计算(含公式与避坑点)

本文详细解析了车规芯片FMEDA计算的全流程,基于Synopsys报告拆解实战指南,涵盖基础失效率建模、安全机制效能评估及安全指标合成等关键步骤。通过公式解析、数据准备清单和避坑点分享,帮助工程师掌握ISO26262标准下的硬件量化分析技术,提升车载系统设计可靠性。

weixin_30460489的博客 195

Go 每日一库之 cobra

简介 cobra是一个命令行程序库,可以用来编写命令行程序。同时,它也提供了一个脚手架,用于生成基于 cobra 的应用程序框架。非常多知名的开源项目使用了 cobra 库构建命令行,如Kubernetes、Hugo、etcd等等等等。本文介绍 cobra 库的基本使用和一些有趣的特性。 关于作者spf13,这里多说两句。spf13 开源不少项目,而且他的开源项目质量都比较高。相信使用过 vim ...

darjun的博客 7343

Apollo学习笔记(1) 百度 Apollo Cyber RT简介、基本概念以及与 ROS 对照

一、背景 ROS 应用于自动驾驶领域的不足: 调度的不确定性:各节点以独立进程运行,节点运行顺序无法确定,因而业务逻辑的调度顺序无法保证; 运行效率:ROS 为分布式系统,存在通信开销 二、Cyber RT 框架 从下到上依次为: 基础库:高性能,无锁队列; 通信层:Publish/Subscribe机制,Service/Client机制,服务自发现,自适应的通信机制(共享内存、Socket、进程内); 数据层:数据缓存与融合。多路传感器之间数据需要融合,而且算法可能需要缓存一定的数据。比如典型的仿真应用

qq_24649627的博客 3392

从Demo到产品:基于ADAU1452的ANC方案,硬件选型、性能优化与避坑指南

本文详细解析了基于ADAU1452的主动降噪(ANC)方案从Demo到产品的实现路径,涵盖硬件选型、性能优化与实战避坑指南。重点探讨了ADAU1452与ADAU1466的性能差异、编解码器选型策略,以及MFXLMS算法优化技巧,为工程师提供从理论验证到量产落地的系统级解决方案。

weixin_30542079的博客 451

golang常用库之-命令行工具 Cobra(眼镜蛇)

文章目录golang常用库之-命令行工具 cobra项目作者cobraCobra提供的功能概念golang命令行库cobra的使用 golang常用库之-命令行工具 cobra spf13/cobra 和 urfave/cli 是Go的2个优秀命令行工具: 名称 star 仓库地址 应用项目 spf13/cobra 25.6k https://github.com/spf13/cobra docker, kubernetes, istio, hugo … urfave/cli 17.5k

西京刀客 2万+

聊聊蓝牙配对技术-CTKD OVER BR/EDR

摘要:本文探讨了蓝牙设备通过跨传输密钥派生(CTKD)机制实现双模连接的技术细节。研究发现,手机在连接双模耳机时优先通过BR/EDR配对,再利用CTKD派生BLE连接所需的密钥。关键条件包括:设备地址一致性、启用安全连接(Secure Connection)及禁用justworks配对方式。文章详细剖析了从BR/EDR链路密钥派生BLE长期密钥(LTK)的算法流程,重点解析了H6/H7加密函数的作用机制与安全差异。研究还通过HCI日志验证了密钥交换和加密建立的完整过程,指出蓝牙5.1版本对CTKD安全性的强

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2699

Golang入门之——cobra包

Cobra 是一个 Golang 包,它提供了简单的接口来创建命令行程序。同时,Cobra 也是一个应用程序,用来生成应用框架,从而开发以 Cobra 为基础的应用。本文的演示环境为 ubuntu 18.04(下图来自互联网)。 cobra 的主要功能如下,可以说每一项都很实用: 简易的子命令行模式,如 app server, app fetch 等等 完全兼容 posix 命令行模式 嵌套子命令 subcommand 支持全局,局部,串联 flags 使用 cobra 很容易的生成应用程序和命令,使用

肥叔菌的博客 6836

YOLOv11改进有效系列目录 - 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制 - 针对多尺度、小目标、遮挡、恶劣天气等问题

在一些特定情况下,目标检测任务由于多种因素的影响,变得更加复杂和困难。以下是几类常见的困难目标检测场景:1. 小目标检测定义:小目标检测是指当目标在图像中的占比非常小时,模型需要准确识别和定位这些目标。典型场景包括远程监控、卫星图像分析等。挑战1. 低分辨率:由于目标在图像中占据像素较少,细节缺失,特征提取难度增加。2. 特征不足:小目标缺乏明显的形状和纹理特征,容易被复杂背景淹没。3. 检测难度大:由于小目标与背景之间的对比度较低,误检的几率上升。4. 数据不平衡。

qq_64693987的博客 4万+

AI奶牛TMR智能饲喂机器人 Qt信创完整项目( 统信/麒麟国产系统直接编译)

内置**犊牛、育成牛、围产牛、泌乳牛、干奶牛**5套标准化饲喂配方;+" 饲喂批次完成|牛群:"+grpText+"|投喂饲料:"+QString::number(ft)+"吨|剩料:"+QString::number(st)+"吨|异常牛:"+QString::number(abCow);cv::putText(frame,"霉变变质饲料禁止饲喂",cv::Point(20,40),cv::FONT_HERSHEY_SIMPLEX,0.7,cv::Scalar(0,0,255),2);

寒寒豆豆软件公司的博客 183

Go cobra 库学习

其实简单的来说,cobra就是一个自定义命令工具,我们经常使用一些命令来构建项目,但是这些命令都是go自带的,你想写自己的命令就可以使用cobra库来试一试。 二,简单的cobra项目 先构建一个简单的cobra命令,以此来熟悉cobra是怎么用的创建一个cmd目录,在目录里创建一个myOrder.go,实际上这个名字可以随便命名,一般来说,你创建的啥命令就写啥名字,这不是为了好找么。 然后在main.go 入口里运行Execute即可main.go ↓ cobraTest是这个项目的名字,c

梦启未来 2549

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Go的命令行工具开发:使用Cobra库

Go语言,作为一门静态类型的编译型语言,以其简洁、高效和并发处理能力著称。它不仅在服务器端应用中大放异彩,同时也是构建强大且易于维护的命令行工具(CLI)的理想选择。命令行工具是操作系统的一部分,它们可以在终端中直接执行各种任务,如文件管理、网络配置等,极大地方便了系统管理员和技术人员进行日常操作。举例来说,Linux用户可能熟悉grep这样的命令行工具,它可以用来搜索文本模式;还有curl,用于从服务器传输数据。这些工具简化了重复性工作的自动化流程,并允许通过脚本链接起来完成更复杂的任务。

master_chenchen的博客 1727

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Cobra:一种基于golang的命令行开发框架(一)

介绍cobra框架的用法,帮助快速上手命令行开发

weixin_38757398的博客 2245

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

go Cobra命令行工具入门

本文介绍一个go命令行工具库,我们可以基于cobra快速的开发我们自己的命令行程序,特别适合Admin CLI、写各种测试脚本(如果使用main入口,要建很多个package)等等场合。

xmcy001122的专栏 2828

Go命令行库Cobra的使用

点击上方“朱小厮的博客”,选择“设为星标”回复”1024“获取独家整理的学习资料这篇文章是分析golang中命令行解析库的。关注我公众号的很多都是Java程序员,对于Ja...

朱小厮的博客 8421

深入讲解一下 Go 语言中最负盛名的命令行库 Cobra 的源码和核心设计

Cobra 的核心思想是一切皆命令 (Everything is a Command)。一个应用程序是由一个根命令(Root Command)和一系列子命令(Sub-commands)组成的树状结构。例如,git 命令:git 是根命令。git clone ... 中,clone 是 git 的一个子命令。git remote add ... 中,remote 是 git 的子命令,而 add 又是 remote 的子命令。这种树状结构就是 Cobra 设计的基础。

u011091936的博客 1152

Go语言的命令行解析与cobra

1.背景介绍 1. 背景介绍 命令行解析是一种常见的编程任务,它涉及到从命令行接收用户输入并将其解析为程序可以理解的格式。在Go语言中,命令行解析是一项重要的技能,因为Go语言的标准库提供了一些强大的工具来处理命令行参数。 在本文中,我们将讨论Go语言的命令行解析,以及如何使用cobra库来构建高级命令行应用程序。cobra是一个Go语言的命令行应用程序框架,它提供了一种简单而强大的方式来构...

AI天才研究院 1306

Cobra:Go 语言的命令行库详解

Cobra 支持自定义标志,包括位置参数、可选标志等。} else {},在上面的例子中,我们为greet命令添加了一个布尔类型的标志--verbose(或-v。

Aaron_945的博客 1199

【golang】Cobra库使用

要在Go中使用go mod: 你已经创建了名为的目录,接下来进入该目录。: 在项目目录中,运行命令来初始化一个新的模块。你需要为你的模块指定一个唯一的名称,这通常是你的域名的反向表示,以确保唯一性。将替换为你的实际用户名和项目路径3.若使用wsl把代理ip变为主机ipconfig显示ip4.go get 和go install的区别验证安装。

lcadna的博客 1197
上一篇: Go语言标准库学习之sync一(go语言中的锁)
下一篇: Shell编程从入门到精通——基本文本处理(一)
random_w
博客等级 码龄9年 130粉丝 168原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值