广告位联系
返回顶部
分享到

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

Golang 来源:互联网 作者:佚名 发布时间:2023-02-26 11:51:26 人浏览
摘要

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

在日常开发中,大家对命令行工具(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。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/luduoyuan/article/details/129133627
相关文章
  • Hugo游乐场内容初始化示例介绍
    使用Hugo构建站点的体验很棒。 首先是构建速度快,其次是使用起来简单,一个hugo命令,我们的站点就已经就绪。 在构建过程中,Hugo提供了
  • 使用Golang快速构建出命令行应用程序
    在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工
  • go开源Hugo站点渲染之模板词法解析

    go开源Hugo站点渲染之模板词法解析
    Deps在准备好NewPathSpec,NewSpec,NewContentSpec,NewSourceSpec后,调用onCreate正式创建HugoSites,并在最后一步,加载模板执行器。 模板执行器只是提
  • 向Rust学习Go考虑简单字符串插值特性示例解析
    fmt.Printf或fmt.Sprintf写拼装字符串业务 在日常开发 Go 工程中,我们经常会用fmt.Printf或fmt.Sprintf去写类似的拼装字符串的业务。 如下代码:
  • Golang实现将中文转化为拼音

    Golang实现将中文转化为拼音
    导语:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英
  • Go语言实现猜谜小游戏

    Go语言实现猜谜小游戏
    本文是介绍用Go实现一个猜谜小游戏,就是程序先生成一个随机数num,然后让用户来猜生成的数是多少,如果猜的数比num小就提示用户猜测的
  • go微服务PolarisMesh源码解析服务端启动流程
    polaris-server作为PolarisMesh的控制面,该进程主要负责服务数据、配置数据、治理规则的管理以及下发至北极星SDK以及实现了xDS的客户端。 po
  • go sync.Map基本原理深入解析
    我们知道,go 里面提供了map这种类型让我们可以存储键值对数据,但是如果我们在并发的情况下使用map的话,就会发现它是不支持并发地进
  • Golang的Fork/Join实现代码

    Golang的Fork/Join实现代码
    做过Java开发的同学肯定知道,JDK7加入的Fork/Join是一个非常优秀的设计,到了JDK8,又结合并行流中进行了优化和增强,是一个非常好的工具
  • Golang嵌入资源文件实现步骤
    Go文档中展示了多种方式实现外部资源嵌入,包括文本文件、图片、ios文件等: 文本文件 1 2 3 4 5 6 7 package main import _ embed //go:embed schema.sql
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计