概述
CLI 开发人员更喜欢 Go,因为它具有可移植性、性能和易于创建的特点
命令行界面 (CLI) 不同于图形用户界面 (GUI),它仅限于文本。云和基础设施应用程序主要基于 CLI,因为它们易于自动化和具有远程功能。
主要优点
利用快速的编译时间来构建可在任何系统上快速启动和运行的程序
CLI 开发人员发现 Go 非常适合设计其应用程序。Go 可以非常快速地编译成单个二进制文件,在各个平台上以一致的风格运行,并带来强大的开发社区。开发人员只需使用一台 Windows 或 Mac 笔记本电脑,即可在几秒钟内为 Go 支持的数十种架构和操作系统构建一个 Go 程序,而无需复杂的构建场。没有其他编译语言可以如此便携或快速地构建。Go 应用程序构建为一个独立的二进制文件,从而使 Go 应用程序的安装变得非常简单。
具体来说,用 Go 编写的程序可以在任何系统上运行,而无需任何现有的库、运行时或依赖项。而且用 Go 编写的程序具有即时启动时间——类似于 C 或 C++,但其他编程语言无法实现。
用例
使用 Go 构建优雅的 CLI
在 Go 中开发 CLI 时,广泛使用了两个工具:Cobra 和 Viper。
Cobra 既是一个用于创建强大的现代 CLI 应用程序的库,也是一个用于在 Go 中生成应用程序和 CLI 应用程序的程序。Cobra 为大多数流行的 Go 应用程序提供支持,包括 CoreOS、Delve、Docker、Dropbox、Git Lfs、Hugo、Kubernetes 和 更多。OpenFaaS 的创始人 Alex Ellis 说:“通过集成的命令帮助、自动完成和文档,[它] 使得记录每个命令变得非常简单。”
Viper 是 Go 应用程序的完整配置解决方案,旨在在应用程序内工作以处理配置需求和格式。Cobra 和 Viper 被设计为可以协同工作。
Viper 支持嵌套结构,允许 CLI 开发人员管理大型应用程序的多个部分的配置。Viper 还提供了轻松构建十二因子应用程序所需的所有工具。
“如果你不想污染你的命令行,或者如果你正在处理敏感数据,而你不想在历史记录中显示这些数据,那么最好使用环境变量。为此,你可以使用 Viper,”Geudens 建议。
特色用户
客户 | 简介 | 使用 Go 的项目 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
开始使用
用于创建 CLI 的 Go 书籍
CLI 库
-
spf13/cobra
用于创建强大的现代 CLI 应用程序的库,以及用于在 Go 中生成应用程序和 CLI 应用程序的程序
-
spf13/viper
Go 应用程序的完整配置解决方案,旨在应用内工作以处理配置需求和格式
-
urfave/cli
用于创建和组织命令行 Go 应用程序的最小框架
-
delve
为习惯于在编译语言中使用源代码级调试器的程序员构建的简单而强大的工具
-
chzyer/readline
提供 GNU Readline(在 MIT 许可证下)中大多数功能的纯 Golang 实现
-
dixonwille/wmenu
CLI 应用程序中易于使用的菜单结构,提示用户做出选择
-
spf13/pflag
Go 的 flag 包的替代品,实现 POSIX/GNU 样式标志
-
golang/glog
Go 的分级执行日志
-
go-prompt
用于构建强大的交互式提示的库,使用 Go 构建跨平台命令行工具变得更加容易。