使用Golang快速构建出命令行应用程序

 更新时间:2023年02月24日 15:56:17   作者:路多辛  
在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工具,例如最常用的Git、Go、Docker等,这篇文章主要介绍了使用Golang快速构建出命令行应用程序,需要的朋友可以参考下

在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工具,例如最常用的Git、Go、Docker等。

不管是做技术开发还是业务开发,都会有开发命令行程序的场景。例如如果是开发框架,会开发一个命令行工具帮助使用者快速生成项目结构;如果是开发一个定时任务程序,会开发一个命令行工具来启动这个任务。本文就介绍两个专门用来开发命令行应用程序的库。

urfave/cli

urfave/cli是一个简单、快速、有趣的包,专门用于构建命令行应用程序。其目标是使开发人员能够以一种富有表现力的方式编写快速且可分发的命令行应用程序。看一个简单的例子:

package main
 
import (
	"fmt"
	"log"
	"os"
 
	"github.com/urfave/cli/v2"
)
 
funcmain() {
	app := &cli.App{
		Name:  "blog",
		Usage: "显示路多辛blog欢迎语",
		Action: func(*cli.Context)error {
			fmt.Println("欢迎来到路多辛的blog,能帮助到大家是我最大的快乐!")
			returnnil
		},
	}
 
	if err := app.Run(os.Args); err != nil {
		log.Fatal(err)
	}
}

编译后,执行一下查看帮助命令看下效果

$ ./main -h 
NAME:
   blog - 显示路多辛blog欢迎语
 
USAGE:
   blog [global options] command [command options] [arguments...]
 
COMMANDS:
   help, h  Shows a list of commands or helpfor one command
 
GLOBAL OPTIONS:
   --help, -h  show help

执行下blog命令看下效果

$ ./main blog
欢迎来到路多辛的blog,能帮助到大家是我最大的快乐!

更多使用方法可以参考官方文档 https://cli.urfave.org/

spf13/cobra

这个库是Go语言负责人主要参与开发的,很多知名项目的命令行工具都是使用这个库开发的,例如Kubernetes、Istio、Docker、Etcd、GitHubCLI等等。看一个简单的例子:

package main
 
import (
	"fmt"
	"os"
 
	"github.com/spf13/cobra"
)
 
funcmain() {
	Execute()
}
 
funcExecute() {
	var rootCmd = &cobra.Command{
		Use:   "blog",
		Short: "显示路多辛blog欢迎语",
		Long:  "显示路多辛blog欢迎语,介绍blog的整体情况",
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Println("欢迎来到路多辛的blog,能帮助到大家是我最大的快乐!")
		},
	}
	if err := rootCmd.Execute(); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
}

编译后,执行一下查看帮助命令看下效果:

$./main -h       显示路多辛blog欢迎语,介绍blog的整体情况Usage:blog[flags]Flags:-h,--help   help for blog

执行下blog命令看下效果:

$ ./main blog
欢迎来到路多辛的blog,能帮助到大家是我最大的快乐!

更多使用方法可以参考官方文档

https://github.com/spf13/cobra/blob/main/user_guide.md

到此这篇关于使用Golang快速构建出命令行应用程序的文章就介绍到这了,更多相关Golang命令行应用程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Golang应用执行Shell命令实战

    Golang应用执行Shell命令实战

    本文主要介绍了Golang应用执行Shell命令实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Go语言中的空值(nil)与零值(zerovalue)区别详解

    Go语言中的空值(nil)与零值(zerovalue)区别详解

    在Go语言中,空值(nil)和零值(zero value)是两个不同的概念,它们在语义、使用场景以及实际的编程实践中有着明显的区别,理解这两者的差异对于编写清晰、健壮的Go代码至关重要,需要的朋友可以参考下
    2024-06-06
  • 从错误中学习改正Go语言六个坏习惯提高编程技巧

    从错误中学习改正Go语言六个坏习惯提高编程技巧

    这篇文章主要为大家介绍了从错误中学习改正Go语言五个坏习惯提高编程技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Go 数据结构之堆排序示例详解

    Go 数据结构之堆排序示例详解

    这篇文章主要为大家介绍了Go 数据结构之堆排序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go 语言中gin使用gzip压缩遇到的问题

    Go 语言中gin使用gzip压缩遇到的问题

    这篇文章主要介绍了Go 语言中gin使用gzip压缩遇到的问题,需要的朋友可以参考下
    2017-09-09
  • 浅谈Go Slice 高级实践

    浅谈Go Slice 高级实践

    这篇文章主要介绍了浅谈Go Slice 高级实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • go语言中io操作中的 io.Reader 和 io.Writer的获取方法

    go语言中io操作中的 io.Reader 和 io.Writer的获取方法

    在Go语言中,要进行文件io操作,通常需要使用io.Reader或io.Writer对象,获取这些对象的方法包括使用标准库中已实现Read或Write方法的对象,感兴趣的可以了解一下
    2024-10-10
  • 详解如何使用Golang实现Cron定时任务

    详解如何使用Golang实现Cron定时任务

    定时任务是许多应用程序中常见的一种需求,它们可以用于执行定期的清理任务,发送通知,生成报告等,在这篇博客中,我们将介绍如何在Go语言中使用robfig/cron包来实现Cron定时任务,需要的朋友可以参考下
    2024-04-04
  • go通过编码缩短字符串的长度实现方法步骤

    go通过编码缩短字符串的长度实现方法步骤

    这篇文章主要为大家介绍了go通过编码缩短字符串的长度实现方法步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • golang实现大文件上传功能全过程

    golang实现大文件上传功能全过程

    Go语言可以用来实现大文件传输,下面这篇文章主要给大家介绍了关于golang实现大文件上传功能的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07

最新评论