Go语言使用cobra开发第一个命令行程序

news2024/9/27 17:25:23

源码下载

本教程源码下载地址:https://github.com/zhangdapeng520/zdpgo_cobra_examples

案例说明

实现一个简单的命令行程序,能够将输入的单词转换为大写。

使用演示

执行命令:

go run .\main.go word -u -s hello

输出结果:

在这里插入图片描述

完整代码

main.go

package main

import (
	"github.com/zhangdapeng520/zdpgo_cobra_examples/word/cmd"
	"log"
)

func main() {
	if err := cmd.Execute(); err != nil {
		log.Fatalf("cmd.Execute() error(%v)", err)
	}
}

cmd/root.go

package cmd

import "github.com/zhangdapeng520/zdpgo_cobra"

var rootCmd = &zdpgo_cobra.Command{}

func Execute() error {
	return rootCmd.Execute()
}

func init() {
	rootCmd.AddCommand(wordCmd)
}

cmd/word.go

核心代码都在这个里面。

package cmd

import (
	"fmt"
	"github.com/zhangdapeng520/zdpgo_cobra"
	"strings"
)

var (
	str     string // 传入的字符串
	isUpper bool   // 转换为大小
)

func init() {
	wordCmd.Flags().StringVarP(&str, "str", "s", "", "请输入单词内容")
	wordCmd.Flags().BoolVarP(&isUpper, "upper", "u", false, "是否转换为大写")
}

var wordCmd = &zdpgo_cobra.Command{
	Use:   "word",
	Short: "单词格式转换",
	Long:  "支持多种单词格式转换",
	Run: func(cmd *zdpgo_cobra.Command, args []string) {
		// 这个是运行子命令会直接触发的函数
		if isUpper {
			fmt.Println(strings.ToUpper(str))
		}
	},
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XXE靶机教学

arp-scan -l主机发现 arp-scan -l 端口扫描 nmap -p- 192.168.48.139 服务探测 nmap -p80,5355 -sT -sC -sV 192.168.48.139 目录扫描 dirsearch -u http://192.168.48.139 访问robots.txt 发现两个可访问路径 burp抓包 测试是否存在xxe漏洞 <?xml version "1.…

超声波清洗机性价比高的型号有哪些?四款值得关注的高性能超声波清洗机推荐

如果你发现眼镜变得非常脏&#xff0c;甚至出现青铜色的污渍&#xff0c;那说明是时候清洁眼镜了&#xff01;很多人往往不在意这些细节&#xff0c;结果眼镜越戴越模糊&#xff0c;实际上这主要是因为镜片上的油污、手指皮肤的残留以及生活中的灰尘积累。如果不及时清洁&#…

【实现100个unity特效之15】最简单的方法使用shader graphs实现2d树叶草的随风摇摆效果

文章目录 前言新建shader graphs新建材质效果完结 前言 本文只是实现一个简单版本的2d树叶草随风摇摆的效果&#xff0c;如果你想要实现更加复杂的效果&#xff0c;包括2d互动草&#xff0c;你可以参考我之前的文章&#xff1a; 【推荐100个unity插件之24】实现2d交互式草树叶…

瑞熙贝通智慧库房物料管理系统v3.0

一、系统介绍 智慧库房物料软件是库房全流程管理中的管理方式&#xff0c;为强化库房在各个环节管理&#xff0c;提高库房物料管理的效率&#xff0c;针对库房物料管理中存在的问题&#xff0c;瑞熙贝通在库房物料管理工作等方面不断创新&#xff0c;在制度建设、管理流程设计…

2024,Java开发在中国市场还有发展前景吗?

随着2024年的到来&#xff0c;Java作为一种经典而强大的编程语言&#xff0c;依然在中国的软件开发市场中扮演着重要角色。然而&#xff0c;许多人对Java的未来发展前景持有不同的看法。让我们来探讨一下当前情况和未来的走向。 Java程序员真的过剩了吗&#xff1f; 2023年, 各…

深度学习 —— 个人学习笔记14(ResNet、DenseNet)

声明 本文章为个人学习使用&#xff0c;版面观感若有不适请谅解&#xff0c;文中知识仅代表个人观点&#xff0c;若出现错误&#xff0c;欢迎各位批评指正。 二十八、残差网络&#xff08; ResNet &#xff09; import torch import torchvision import time from torch impo…

01:PID

前言 位式控制算法 位式控制算法是一种通过比较设定值&#xff08;SV&#xff09;和当前值&#xff08;PV&#xff09;来控制目标的方法。当PV小于SV时&#xff0c;输出高电平&#xff0c;执行部件工作&#xff1b;当PV大于或等于SV时&#xff0c;输出低电平&#xff0c;执行部…

Android 中compileSdk、minSdk、targetSdk 是干什么用的?

作为多年 Android 开发的老司机&#xff0c; compileSdk 、minSdk、targetSdk 都是经常见到&#xff0c;但其具体含义是什么&#xff1f;它们都是在什么场景下去使用的。回想起来还真不太能说得清楚。 背景 要想说清楚它们是干什么的&#xff0c;那就不得不说一下主角 Android …

每组中随机选一行

Excel的A列是分组&#xff0c;B列是明细。 AB1GroupName2AJohn3AJoe4AAnn5ASusan6AJames7AMary8AL .orraine9BJoseph10BSinead11BMichelle12BBreege13BTom14BFrancis15BConan16BCait17BRonan18BDeirdre19BAoife20BSile21BSarah22CLisa23CMicky24CPat25DMiles26DOlivia27DAvril…

骑行合并 轨迹合并

https://gpxt.beer5214.com/ 利用GPX轨迹合并工具提升长途骑行与徒步体验 对于长途骑行或长途徒步旅行的爱好者来说&#xff0c;记录和管理GPS轨迹是一项重要的活动。无论是为了后续分析自己的路线、分享经历还是为下一次冒险做准备&#xff0c;确保所有轨迹数据的完整性和连贯…

Spark轨迹大数据处理_scalaSpark代码实多点对多点的GIS点(经纬度点)的方位角计算

计算逻辑 1、我这个代码是基于一个简化方位角模型&#xff0c;忽略了地球的曲率&#xff0c;适用于距离相对较短的距离。因为业务相关&#xff0c;这个方位角两个点的距离计算不会超过1000km。 2、我这个方位角的计算逻辑&#xff1a;是从一个地点指向另一个地点的方向&#xf…

中小学创客室培养学生全面发展

随着时代的发展,教育也在飞速发展&#xff0c;教育决定着一个国家的未来&#xff0c;一个家庭的未来&#xff0c;一个人的未来&#xff0c;我国近年来大力鼓励科学教育&#xff0c;支持科学创新。因此&#xff0c;学校应该重视对学生的科学教育&#xff0c;尤其是处于思想启蒙阶…

使用Python编写文件重复检查器

在日常工作中&#xff0c;我们经常需要处理大量文件&#xff0c;但有时候会遇到文件重复的情况。为了有效管理文件并避免重复占用存储空间&#xff0c;我们可以编写一个简单的Python程序来检查文件夹中是否存在重复文件。 C:\pythoncode\new\getmd5offile.py 介绍 本文将介绍…

CSP 2019 第三题:纪念品

CSP 2019 第三题&#xff1a;纪念品 题目链接 题目&#xff1a; 题意&#xff1a; 数据给出能预测的天数&#xff0c;纪念品种类&#xff0c;持有金币。每天对金币进行买卖&#xff0c;求买卖后的金币最大值&#xff08;如何赚得更多&#xff09; 知识点考&#xff1a; 动态规划…

从零到一:使用低代码平台搭建设备保养管理系统,提升运维效率

设备作为企业生产线上不可或缺的“动脉”&#xff0c;其稳定、高效的运行状态直接关乎到产品的质量与交付速度。然而&#xff0c;设备在长期高负荷运作下&#xff0c;难免会出现磨损、故障等问题&#xff0c;这不仅会影响生产进度&#xff0c;还可能带来额外的维修成本与安全风…

微信小程序--实现地图定位---获取经纬度

(1) (2) (3) html: <view class"titleTwo" style"border: none;"><view class"fontSize30 invoiceTile">企业地址</view><view class"invoiceRight" bind:tap"tapChooseAddress" data-maptype"…

Android 在布局中tools使用

效果图 布局 <TextViewandroid:id"id/tv"android:layout_width"wrap_content"android:layout_height"wrap_content"android:text"你好&#xff0c;这是TextView"android:visibility"gone"app:layout_constraintStart_to…

tornado 下载文件,显示下载速度、已下载大小、剩余时间、进度条、文件总大小

tornado 下载文件&#xff0c;显示下载速度、已下载大小、剩余时间、进度条、文件总大小 初版解决中文文件名报错显示下载速度、已下载大小下载过程中显示文件总大小、剩余时间、进度条正常前进 初版 import asyncio import osimport aiofiles import tornado.webclass FileHa…

【算法刷题日志】1044 最长重复子串和75 颜色分类,

颜色分类 这题就是双指针法&#xff0c;指到1的时候就和p1进行交换&#xff0c;然后p1指针往前移动&#xff0c;指到0的时候就和p0指针进行交换&#xff0c;p0和p1同时往前移动&#xff0c;由于可能出现连续的0后面连续的1&#xff0c;所以为了避免1被交换到末尾&#xff0c;当…

conda-pack基于同一种操作系统的环境打包教程

打包环境总结 1.激活需要复制的虚拟环境 conda env list cd /home/ww/miniconda3/envs/ conda activate webtool 2.将虚拟环境打包&#xff0c;包名&#xff1a;webtool_test.tar.gz conda pack -n webtool -o webtool_test.tar.gz 3.创建虚拟环境文件夹&#xff0c;把打包的…