概覽
CLI 開發者偏好使用 Go,因為它具備可移植性、高效能且易於開發
命令列介面 (CLI) 與圖形使用者介面 (GUI) 不同,它們僅限文字模式。雲端與基礎架構應用程式由於具備易於自動化與遠端操控的特性,大多採用 CLI。
主要優勢
利用快速的編譯時間來建構啟動迅速且可在任何系統上執行的程式
CLI 開發者發現 Go 是設計應用程式的理想選擇。Go 能極快地編譯成單一二進位檔案,以一致的風格跨平台運作,並擁有強大的開發者社群。開發者只需一台 Windows 或 Mac 筆電,就能在幾秒鐘內為 Go 支援的數十種架構與作業系統建構程式,無需複雜的建構農場(build farms)。沒有其他編譯語言能像 Go 這樣具備如此高的可移植性與編譯速度。Go 應用程式會被建構為單一且獨立的二進位檔,這使得 Go 應用程式的安裝變得極其簡單。
具體而言,以 Go 編寫的程式可以在任何系統上執行,無需依賴任何現有的函式庫、執行環境或相依套件。此外,以 Go 編寫的程式擁有即時的啟動時間,這與 C 或 C++ 類似,卻是其他程式語言難以達到的。
使用案例
使用 Go 來建構優雅的 CLI
在 Go 中開發 CLI 時,有兩個工具被廣泛使用:Cobra 與 Viper。
Cobra 既是一個用於建立強大現代化 CLI 應用程式的函式庫,也是一個用於在 Go 中生成應用程式與 CLI 應用程式的工具。許多熱門的 Go 應用程式背後都有 Cobra 的身影,包括 CoreOS、Delve、Docker、Dropbox、Git Lfs、Hugo、Kubernetes 以及更多專案。OpenFaaS 創辦人 Alex Ellis 表示,憑藉著整合式的指令說明、自動完成與文件生成功能,「它讓每個指令的文檔編寫變得非常簡單」。
Viper 是專為 Go 應用程式設計的完整設定解決方案,旨在應用程式內部處理各種設定需求與格式。Cobra 與 Viper 是為了一起運作而設計的。
Viper 支援巢狀結構的設定,允許 CLI 開發者管理大型應用程式中多個部分的設定。Viper 也提供了建構「十二要素應用程式」(Twelve-Factor App) 所需的所有工具。
「如果你不想污染你的命令列,或者你正在處理不希望出現在歷史紀錄中的敏感資料,那麼使用環境變數是個好主意。要做到這一點,你可以使用 Viper,」Geudens 建議道。
精選用戶
| 客戶 | 簡介 | 使用 Go 的專案 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
開始使用
用於建立 CLI 的 Go 相關書籍
-
Powerful Command-Line Applications in Go
-
Go in Action
-
The Go Programming Language
-
Go Programming Blueprints
CLI 函式庫
-
spf13/cobra
一個用於建立強大現代化 CLI 應用程式的函式庫,以及一個在 Go 中生成應用程式與 CLI 應用程式的工具
-
spf13/viper
一個為 Go 應用程式設計的完整設定解決方案,用於處理應用程式內的設定需求與格式
-
urfave/cli
一個用於建立與組織命令列 Go 應用程式的輕量級框架
-
delve
一個為慣用編譯語言原始碼層級除錯器的程式設計師所打造,簡單而強大的工具
-
chzyer/readline
一個提供 GNU Readline 大多數功能的純 Go 實作(基於 MIT 授權)
-
dixonwille/wmenu
一個易於使用的 CLI 應用程式選單結構,提示使用者進行選擇
-
spf13/pflag
Go 內建 flag 套件的直接替代品,實作了 POSIX/GNU 風格的參數旗標
-
golang/glog
適用於 Go 的分級執行紀錄(Logging)
-
go-prompt
一個用於建構強大互動式提示(prompt)的函式庫,讓使用 Go 建構跨平台命令列工具變得更簡單。