使用Golang快速構建出命令行應用程序

在日常開發中,大傢對命令行工具(CLI)想必特別熟悉瞭,如果說你不知道命令工具,那你可能是個假開發。每天都會使用大量的命令行工具,例如最常用的Git、Go、Docker等。

不管是做技術開發還是業務開發,都會有開發命令行程序的場景。例如如果是開發框架,會開發一個命令行工具幫助使用者快速生成項目結構;如果是開發一個定時任務程序,會開發一個命令行工具來啟動這個任務。本文就介紹兩個專門用來開發命令行應用程序的庫。

urfave/cli

urfave/cli是一個簡單、快速、有趣的包,專門用於構建命令行應用程序。其目標是使開發人員能夠以一種富有表現力的方式編寫快速且可分發的命令行應用程序。看一個簡單的例子:

package main
 
import (
	"fmt"
	"log"
	"os"
 
	"github.com/urfave/cli/v2"
)
 
funcmain() {
	app := &cli.App{
		Name:  "blog",
		Usage: "顯示路多辛blog歡迎語",
		Action: func(*cli.Context)error {
			fmt.Println("歡迎來到路多辛的blog,能幫助到大傢是我最大的快樂!")
			returnnil
		},
	}
 
	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 helpfor one command
 
GLOBAL OPTIONS:
   --help, -h  show help

執行下blog命令看下效果

$ ./main blog
歡迎來到路多辛的blog,能幫助到大傢是我最大的快樂!

更多使用方法可以參考官方文檔 https://cli.urfave.org/。

spf13/cobra

這個庫是Go語言負責人主要參與開發的,很多知名項目的命令行工具都是使用這個庫開發的,例如Kubernetes、Istio、Docker、Etcd、GitHubCLI等等。看一個簡單的例子:

package main
 
import (
	"fmt"
	"os"
 
	"github.com/spf13/cobra"
)
 
funcmain() {
	Execute()
}
 
funcExecute() {
	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。

到此這篇關於使用Golang快速構建出命令行應用程序的文章就介紹到這瞭,更多相關Golang命令行應用程序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: