脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Golang - 使用Golang快速构建出命令行应用程序

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

2023-02-26 15:01路多辛 Golang

在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工具,例如最常用的Git、Go、Docker等,这篇文章主要介绍了使用Golang快速构建出命令行应用程序

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

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

urfave/cli

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)
    }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
$ ./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命令看下效果

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

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

spf13/cobra

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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)
    }
}

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

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

执行下blog命令看下效果:

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

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

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

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

原文链接:https://blog.csdn.net/luduoyuan/article/details/129133627

延伸 · 阅读

精彩推荐
  • GolangGo语言基础入门应用简介及常用命令

    Go语言基础入门应用简介及常用命令

    这篇文章主要为大家介绍了Go语言基础入门应用简介及常用命令,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    枫少文4082021-12-08
  • Golang服务器端Go程序对长短链接的处理及运行参数的保存

    服务器端Go程序对长短链接的处理及运行参数的保存

    这篇文章主要介绍了服务器端Go程序对长短链接的处理及运行参数的保存,这里针对使用Go语言编写的Socket服务器进行实例说明,需要的朋友可以参考下 ...

    G1SLu2852020-04-29
  • GolangGo语言模型:string的底层数据结构与高效操作详解

    Go语言模型:string的底层数据结构与高效操作详解

    这篇文章主要介绍了Go语言模型:string的底层数据结构与高效操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    ka__ka__12812021-03-20
  • Golang详解Go语言Slice作为函数参数的使用

    详解Go语言Slice作为函数参数的使用

    Slice切片在Go语言中实质是一种结构体类型,本文详细的介绍了Go语言Slice作为函数参数的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    C天外天S4832021-08-12
  • Golanggo语言读取json并下载高清妹子图片

    go语言读取json并下载高清妹子图片

    前面我们介绍了使用python下载高清妹子图,作为程序猿,我们当然不能只会一种语言,今天我们就来使用go语言来读取API来下载妹子图吧,有需要的宅男们...

    脚本之家5802020-04-25
  • Golanggolang切片内存应用技巧详解

    golang切片内存应用技巧详解

    这篇文章主要介绍了golang切片内存应用技巧详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    kevinyan3242020-06-01
  • GolangGo语言指针使用分析与讲解

    Go语言指针使用分析与讲解

    这篇文章主要介绍了Go语言指针使用分析与讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    极客江南11222021-08-18
  • GolangGolang Protocol Buffer案例详解

    Golang Protocol Buffer案例详解

    这篇文章主要介绍了Golang Protocol Buffer案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    梦想画家10752021-11-22