带你使用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

相关推荐