带你使用Golang快速构建出命令行应用程序(golang 命令行工具)

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

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

urfave/cli

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

package mainimport ( "fmt" "log" "os" "github.com/urfave/cli/v2")func main() { app := &cli.App{ Name: "blog", Usage: "显示路多辛blog欢迎语", Action: func(*cli.Context) error { fmt.Println("欢迎来到路多辛的blog,能帮助到大家是我最大的快乐!") return nil }, } 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 help for one commandGLOBAL OPTIONS: --help, -h show help

执行下blog命令看下效果

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

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

spf13/cobra

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

package mainimport ( "fmt" "os" "github.com/spf13/cobra")func main() { Execute()}func Execute() { 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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月9日 上午11:22
下一篇 2024年5月9日 上午11:34

相关推荐

  • 华帅项目管理系统安装

    华帅项目管理系统安装 华帅项目管理系统是一款功能强大的项目管理软件,能够帮助企业有效地管理项目进度、预算、资源等信息,提高项目管理的效率和精度。本文将介绍如何安装华帅项目管理系统。…

    科研百科 2024年12月31日
    0
  • 会泽:践行“123”工作思路 开启离退休干部党建新篇章(以党建为抓手,全面推进离退休干部工作转型发展)

    会泽县深入学习贯彻中共中央办公厅印发《关于加强新时代离退休干部党的建设工作的意见》准确把握职责使命,按照“坚持一个引领、把握两个重点、做到三个坚持”的“123”工作思路,持续强化党…

    科研百科 2023年11月11日
    97
  • 邦永科技有限公司(邦永pm2项目管理系统)

    邦永pm2项目管理系统邦永pm2项目管理系统中,有连接任务的“先回去”“再绕返去”的“先回去”“再返去”“先回去”“再挂”“再登”“再回去”“再登”“再搭”“再爬”“再搭”等三种游…

    科研百科 2024年5月19日
    60
  • 揭秘云进销存系统是什么?有哪些功能?(云进销存软件的使用方法)

    对于管理者来讲,运营号一家企业免不了需要管理系统的支撑,比如本文要和大家介绍的云进销存系统,进销存系统作为一款企业管理软件被大家所熟知,适用于有零售、批发、库存、财务等管理需求的中…

    2022年8月21日
    396
  • 国创是科研项目吗知乎文章国创是科研项目吗知乎文章

    国创是科研项目吗? 科研项目是一种追求科学真理和技术创新的活动,旨在解决科学问题或开发新技术。这些项目通常由政府机构、企业或学术机构发起,并得到政府或相关机构的支持和资助。 而“国…

    科研百科 2024年9月3日
    26
  • 码头有限公司科研项目

    码头有限公司科研项目 码头有限公司一直致力于探索新的技术,以提高码头的效率和安全性。最近,我们开始了一项科研项目,旨在开发一种基于人工智能的自动化码头管理系统。 该系统将利用人工智…

    科研百科 2025年4月11日
    1
  • 西城区首发社会领域党建APP(北京西城区党建)

    日前,在社会领域党建成果体验展上,西城区推介了36种社会领域党建的创新工作法,并首次推出商务楼宇党员之家APP,搭建商务楼宇党组织和党员的综合服务平台。 通过下载,记者看到,商务楼…

    科研百科 2024年6月9日
    49
  • 项目管理中的系统风险

    项目管理中的系统风险 在项目管理中,系统风险是一个非常重要的话题。系统风险是指由于系统缺陷、错误、故障或其他因素引起的风险。这些风险可能会对项目的成功产生重大影响,因此,必须采取措…

    科研百科 2024年12月27日
    1
  • 网易公开课科研项目

    网易公开课科研项目:探索人类意识的本质 近年来,随着科技的不断进步,人们对宇宙、神经科学、认知科学等领域的兴趣也日益增加。网易公开课科研项目“人类意识的本质”正是这样一个探索人类本…

    科研百科 2025年2月4日
    0
  • 科研项目绩效监控报告

    科研项目绩效监控报告 随着科技的不断发展,科研项目已经成为推动社会进步的重要力量。然而,科研项目的绩效监控是确保项目成功的关键因素之一。本文将对科研项目绩效监控报告进行探讨。 一、…

    科研百科 2025年3月27日
    2