概述

CLI 开发人员更喜欢 Go 的可移植性、性能和易创建性

与图形用户界面 (GUI) 不同,命令行界面 (CLI) 是纯文本的。云和基础设施应用程序主要基于 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 的项目
Comcast Comcast Comcast Comcast 使用 Go 作为 CLI 客户端,用于发布和订阅其高流量站点。该公司还支持一个用 Go 编写的开源客户端库——专为与 Apache Pulsar 一起使用而设计.
GitHub GitHub GitHub GitHub 使用 Go 作为命令行工具,可以更轻松地使用 GitHub,包装 git 以便使用额外的功能和命令对其进行扩展.
Hugo Hugo Hugo Hugo 是最受欢迎的 Go CLI 应用程序之一,为数千个站点提供支持,包括这个站点。它流行的一个原因是它易于安装,这要归功于 Go。Hugo 的作者 Bjørn Erik Pedersen 写道:“单个二进制文件消除了安装和升级的大部分痛苦.”

开始

创建 CLI 的Go书籍

  • spf13/cobra

    一个用于创建强大的现代 CLI 应用程序的库和一个在 Go 中生成应用程序和 CLI 应用程序的程序

  • spf13/viper

    Go 应用程序的完整配置解决方案,旨在在应用程序中工作以处理配置需求和格式

  • urfave/cli

    用于创建和组织命令行 Go 应用程序的最小框架

  • delve

    为习惯于在编译语言中使用源代码级调试器的程序员构建的简单而强大的工具

  • chzyer/readline

    一个纯 Golang 实现,提供 GNU Readline 中的大多数功能(在 MIT 许可下)

  • dixonwille/wmenu

    一个易于使用的 CLI 应用程序菜单结构,提示用户做出选择

  • spf13/pflag

    Go 标志包的替代品,实现了 POSIX/GNU 风格的标志(flags)

  • golang/glog

    Go 的分级执行日志

  • go-prompt

    用于构建强大的交互式提示的库,可以更轻松地使用 Go 构建跨平台命令行工具.

查看更多