命令列介面 (CLI)

概覽

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 的專案
Comcast Comcast Comcast Comcast 使用 Go 開發了一個 CLI 客戶端,用於釋出和訂閱其高流量站點。該公司還支援一個用 Go 編寫的開源客戶端庫——專為 Apache Pulsar 工作而設計。
GitHub GitHub GitHub GitHub 使用 Go 開發了一個命令列工具,它透過包裝 git 來擴充套件其額外功能和命令,從而更輕鬆地使用 GitHub。
Hugo Hugo Hugo Hugo 是最受歡迎的 Go CLI 應用程式之一,為成千上萬的網站提供支援,包括這個網站。它受歡迎的原因之一是它易於安裝,這得益於 Go。Hugo 作者 Bjørn Erik Pedersen 寫道:“單個二進位制檔案消除了安裝和升級的大部分痛苦。”

開始使用

Go CLI 建立書籍

  • spf13/cobra

    一個用於建立強大現代 CLI 應用程式的庫,以及一個用於在 Go 中生成應用程式和 CLI 應用程式的程式

  • spf13/viper

    一個完整的 Go 應用程式配置解決方案,旨在在應用程式內部處理配置需求和格式

  • urfave/cli

    一個用於建立和組織命令列 Go 應用程式的極簡框架

  • delve

    一個為習慣於在編譯語言中使用原始碼級偵錯程式的程式設計師設計的簡單而強大的工具

  • chzyer/readline

    一個純 Golang 實現,提供了 GNU Readline 的大部分功能(MIT 許可證下)

  • dixonwille/wmenu

    一個易於使用的 CLI 應用程式選單結構,提示使用者進行選擇

  • spf13/pflag

    Go 的 flag 包的直接替代品,實現了 POSIX/GNU 風格的 flag

  • golang/glog

    Go 的分級執行日誌

  • go-prompt

    一個用於構建強大的互動式提示的庫,使使用 Go 構建跨平臺命令列工具變得更容易。

檢視更多