cobra的使用

2023-10-27

一、安装cobra

go get -g github.com/spf13/cobra/cobra

这里会报错,如下:

package golang.org/x/sys/unix: unrecognized import path "golang.org/x/sys/unix" (https fetch: Get https://golang.org/x/sys/unix?go-get=1: dial tcp 108.177.120.94:443: i/o timeout)

解决方法:
使用github中的包代替

go get github.com/golang/sys

然后再把它拷到golang.org包下,编译cobra

go build github.com/spf13/cobra/cobra

二、初始化一个项目

cobra init gitee.com/study/testGoPackage/spf13/cobra/demo

生成的目录结构如下:
在这里插入图片描述
切到demo目录下

1.编译并运行

 [[spf:demo shanpengfei$]]  go build -o d main.go 
 [[spf:demo shanpengfei$]]  ./d
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.

2.添加子命令

 [[spf:demo shanpengfei$]]  cobra add te
te created at /Users/shanpengfei/work/goland/src/gitee.com/study/testGoPackage/spf13/cobra/demo/cmd/te.go
 [[spf:demo shanpengfei$]]  go build -o d main.go 
 [[spf:demo shanpengfei$]]  ./d 
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:
  demo [command]

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

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

Use "demo [command] --help" for more information about a command.
 [[spf:demo shanpengfei$]]  ./d te
te called

3.添加参数

代码如下:

import (
	"fmt"
	"github.com/spf13/cobra"
	"os"
)
var (
	name string
)
var cmd  = &cobra.Command{
	Use: "demoSelf",
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Println(name)
	},
}

func Execute()  {
	if err := cmd.Execute(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}

func init()  {
	cmd.Flags().StringVarP(&name, "name", "n", "spf", "输入名字")
}

执行命令如下:

spf:demoSelf shanpengfei$ go build -o d main.go 
spf:demoSelf shanpengfei$ ./d
spf
spf:demoSelf shanpengfei$ ./d -n a
a
spf:demoSelf shanpengfei$ ./d -h
Usage:
  demoSelf [flags]
  demoSelf [command]

Available Commands:
  bb          
  help        Help about any command

Flags:
  -h, --help          help for demoSelf
  -n, --name string   输入名字 (default "spf")

Use "demoSelf [command] --help" for more information about a command.
spf:demoSelf shanpengfei$ ./d --name b
b

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cobra的使用 的相关文章

  • golang-bufio 缓冲扫描

    前面两篇博客 介绍了 bufio 包中的缓冲读和写 bufio go 下面再来介绍一下缓冲扫描 scan go 这个扫描的是用来对缓存读的更高级封装 提供了一些更易用的方法 缓冲扫描 Scanner 提供了一个方便的接口来读取数据 例如使用
  • Golang教程:(十六)结构体

    原文 https golangbot com structs 欢迎来到Golang系列教程的第十六篇 什么是结构体 结构体 struct 是用户自定义的类型 它代表若干字段的集合 有些时候将多个数据看做一个整体要比单独使用这些数据更有意义
  • 七. go 常见数据结构实现原理之 反射

    目录 一 golang 是如何实现反射的 如何比较两个对象完全相等 一 golang 是如何实现反射的 参考博客Go 语言问题集 Go Questions Go 语言在 reflect 包里定义了各种类型 实现了反射的各种函数 通过它们可以
  • 服务计算hw7

    任务目标 设计一个 web 小应用 展示静态文件服务 js 请求支持 模板输出 表单处理 Filter 中间件设计等方面的能力 不需要数据库支持 基本要求 支持静态文件服务 支持简单 js 访问 提交表单 并输出一个表格 对 unknown
  • golang sleep

    golang的休眠可以使用time包中的sleep 函数原型为 func Sleep d Duration 其中的Duration定义为 type Duration int64 Duration的单位为 nanosecond 为了便于使用
  • go语言基础-----03-----流程控制、函数、值传递、引用传递、defer函数

    1 流程控制 这里只讲 for range 语句 这个关键字 主要用于遍历 用来遍历数组 slice map chan 例如 package main import fmt func main str hello world 中国 for
  • 权重实现随机抽奖

    一般抽奖是怎么实现的 在实习期间学会了一种通用的写法 在这里记录一下 最近在学Golang语法基础 这里就用Golang来写 package main import fmt time math rand func main r rand N
  • beego+goAdmin+mysql+docker+natapp作为微信小程序地服务器“伪部署”

    写在前面的话 1 为什么我要叫伪部署 答 因为我把它们放在服务器运行 都是开发模式 生产模式实在不会弄 所以就这样了 2 系统环境 答 腾讯云服务器 系统为 ubuntu 版本不记得 应该是比较高的 3 前提假设 答 假设你的服务器已经安装
  • 【golang】error parsing regexp: invalid or unsupported Perl syntax (正则表达式校验密码)

    要在 Go 中编写密码校验规则 确保密码不少于8位且包含数字和字母 你可以使用正则表达式和 Go 的 regexp 包来实现 以下是一个示例代码 错误示范 package main import fmt regexp func valida
  • go 进阶 gin实战相关: 五. gin_scaffold 企业脚手架

    目录 一 gin scaffold 企业级脚手架 二 gin scaffold 脚手架安装及使用演示 文件分层解释 开始使用 1 配置开启go mod 功能 2 下载 安装 gin scaffold 3 整合 golang common 4
  • Go语言包管理(一)

    Go语言中的包 我们在使用其他语言 比如Java Python 都有类似包的概念 Go也不例外 其核心思想即为分组和模块化 人的大脑对庞大和复杂的事情很难掌控 可以对其采用分而治之的策略 使其模块化 从而更容易管理 如下是标准库中net包的
  • goland环境配置

    goland modules环境配置 下载和安装goland 环境配置 配置环境变量GOPATH 配置go modules GOPROXY代理的系统变量 工程目录中新建三个工作目录 goland中启用go modules 新建一个go程序
  • 基于Go语言实现简易Web应用

    目录 前言 Go语言特点 写在使用Go语言实现Web应用前面 创建Web服务器 声明一个结构体操作 加入中间件的使用 使用静态文件服务器 最后 前言 在编程语言中 近几年问世的几个新语言都是非常不错的 比如Go Python Rust等等
  • Go 程序编译过程(基于 Go1.21)

    版本说明 Go 1 21 官方文档 Go 语言官方文档详细阐述了 Go 语言编译器的具体执行过程 Go1 21 版本可以看这个 https github com golang go tree release branch go1 21 sr
  • go-zero开发入门-API网关开发示例

    开发一个 API 网关 代理 https blog csdn net Aquester article details 134856271 中的 RPC 服务 网关完整源代码 file main go package main import
  • go-zero开发入门-API网关鉴权开发示例

    本文是 go zero开发入门 API网关开发示例 一文的延伸 继续之前请先阅读此文 在项目根目录下创建子目录 middleware 在此目录下创建文件 auth go 内容如下 鉴权中间件 package middleware impor
  • “go mod tidy”之错误“not a valid zip file”

    执行 go mod tidy 时 遇到如下错误 rpc imports github com zeromicro go zero zrpc imports github com zeromicro go zero zrpc resolver
  • go开发--操作mysql数据库

    在 Go 中访问 MySQL 数据库并进行读写操作通常需要使用第三方的 MySQL 驱动 Go 中常用的 MySQL 驱动有 github com go sql driver mysql 和 github com go xorm xorm
  • Golang拼接字符串性能对比

    g o l a n g golang g o l an g
  • go cannot find package “github.com/gorilla/websocket“解读

    Go无法找到包 github com gorilla websocket 的解决方案 在Go开发过程中 我们经常会依赖第三方库来简化开发工作 而使用 go get 命令安装这些库时 有时候我们可能会遇到类似于以下错误的情况 plaintex

随机推荐

  • CSS属性纪要

    1 line height 行高 跟font size属性的大小有关 一般可用来设置元素垂直居中 1 单行文字或单张图片的垂直居中 div 你好你好 div 以以上代码为例 设置box和height和line height高度一样就可以垂直
  • 原子锁

    Windows核心编程 Interlocked原子访问系列函数 http blog csdn net zhongguoren666 article details 7542975 InterlockedExchange http blog
  • 时间序列的数据分析(一):主要成分

    时间序列是一组按照时间发生先后顺序进行排列 并且包含一些信息的数据点序列 在时间序列数据中通常包含了数据的发展趋势 向上 向下 保持 和数据的变化规律 季节性 等特征 而这些特征往往具有一定的规律性和可预测性 具体来说时间序列数据具有如下几
  • BES2300 代码主架构笔记

    1 BES的内核用的是RTX的内核 并且用了ARM推广的CMSIS RTOS API接口 这样做的好处是可以方便内核的更换 方便移植上层代码 2 程序是从RTX CM LIB H里面的 main init 开始的 里面包括了内核的初始化 堆
  • 【更新指南】BarTender正式迎来2019 R2重大版本更新!

    BarTender 在 150 多个国家 地区拥有成千上百的用户 在标签 条形码 证卡和 RFID 标记的设计和打印领域是全球首屈一指的软件 BarTender 既可以单独运行 也可以与任何其他程序集成 几乎是所有按需打印或打标应用的完美解
  • 国泰安下载数据太大?stata传不进来?

    除了换电脑还有啥方法 其实就是一个小的tip 善用国泰安的条件筛选功能 只愿大家可以从下面的小例子中获取点扩展思维 例如最常用的财务报表数据 国泰安默认的是季度数据 但大多数时候我们需要的只是年度数据 那么我们就可以在条件筛选处加一个 不要
  • 【Android】点击应用进而打开base.apk的调用流程再分析

    点击一个应用的时候 会加载其对应的base apk 我们在AssetManager类的addAssetPath方法中添加堆栈打印 其调用堆栈为 android content res AssetManager addAssetPath As
  • 性能测试 —— Jmeter 常用重要函数汇总

    1 counter 计数器 加1的功能 疑问 假如加2 使用计数器 计数器超过最大值后重新开始计数 重点 最大值 如果运行结果超过最大值时 又会从起始值开始循环每个 用户独立计数器 多线程时 每个用户都是从起始值开始计数 跟线程号有关 th
  • Android 工程师需要了解的 Lint 知识入门篇

    前言 项目开发过程中 通过对代码规范的约束对于代码质量的提升是非常重要的 这其中除了人为的代码审查之外 我们还可以使用 lint 工具来定位并修改一些有问题的代码 帮助提高我们的代码规范程度 今天我们就一起来学学 lint 的使用 自动提示
  • filter过滤器

    1 Filter 什么是过滤器 1 Filter 过滤器它是 JavaWeb 的三大组件之一 三大组件分别是 Servlet 程序 Listener 监听器 Filter 过滤器 2 Filter 过滤器它是 JavaEE 的规范 也就是接
  • PCB布线中,重要的信号线进行包地处理

    原文地址 http zhenshanmcu blog 163 com blog static 16545766220137755225723 相关网帖 1 在PADS2007中 地包线怎么画 主要针对时钟信号 http zhidao bai
  • 自定义异常类

    public class MyException extends Exception public MyException String message super message
  • HTML5中制作彩色圆环的代码,HTML5 五彩圆环Loading加载动画实现教程

    HTML代码 CSS代码 webkit keyframes spin from webkit transform rotate 360deg transform rotate 360deg to webkit transform rotat
  • Unity做一个发射炮台,1秒发射1个,5秒后消失的例子

    思路 小球要移动 移动一段时间消失 需要translate destory 一个小球不够 需要多次COPY预制体小球 copy 一 COPY代码 把这个代码放在不是复制的球的其他物体上 然后把预制体球拖入a中 using UnityEngi
  • VNC源码研究(十)XP、Win7实现模拟发送ATL+CTRL+DEL

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 1 vnc 4 0 winsrc 版本中实现模拟发送ATL CTRL DEL 在工程wrfb win32m中找到模拟发送ATL CTR D
  • Doris学习笔记之查询

    文章目录 查询设置 增大内存 修改超时时间 查询重试和高可用 代码方式 JDBC连接器 ProxySQL方式 简单查询 基本查询 联合 join 查询 子查询 Join查询 广播Join 默认使用 Broadcast Join 显式使用 B
  • Android程序如何全屏显示

    在一个8寸屏的Android平板电脑上开发应用程序 游戏程序 开始的时候 总是不能全屏显示 也不知道怎么设置才可以 本来LCD应该是800 600的 但总是得到600 600的结果 修改代码如下 布局文件 02
  • 005--Keil使用--出现integer conversion resulted in truncation

    warning 69 D integer conversion resulted in truncation 问题所在 变量赋值超出了变量类型的最大值 解决方法 找到该变量 适当修改变量的类型
  • android u3d验证,几种方法验证unity是否为development build

    我在月初接入了uwa的性能测试SDK 需要提交一个development build的游戏安装包给uwa进行真人真机测试 本文说下如何判断安装包是否为development build 直观上判断 如果是development build模
  • cobra的使用

    一 安装cobra go get g github com spf13 cobra cobra 这里会报错 如下 package golang org x sys unix unrecognized import path golang o