golang 命令列cobra妙用

2022-05-22 15:33:08 字數 1462 閱讀 5492

大型專案中少不了資料公升級,如果採用web服務,一來不夠安全,二來資料量大的時候也會出超時的情況。這時使用命令列是比較合適的方式了。

web專案一般採用mvc模式,對於命令列有嗎?

對於命令列則有command(命令)和flag(引數),golang自帶了flag包,不過功能不夠強大,這裡我們使用第三方包cobra

具體用法可以參考官方文件,我就不細說了。

按照官方的結構,不好實現自動註冊,每次增加新的命令或資料夾不好管理,需要改動**。經過一番思考,發現可以利用golang的init機制來達到我的目的。

目錄結構如下:

執行效果如圖:

其中rootcmd.go 中初始化根命令rootcmd,同時封裝兩個函式,乙個是新增子命令的,乙個是執行的。

}//封裝了兩個函式

func addcommand(cmd *cobra.command)

func execute() error

對於子命令,我可以匯入rootcmd所在的包,然後在init函式裡,呼叫rootcmd.addcommand

比如updatecmd.go

)// 註冊命令

func init()

var usercmd = &cobra.command,

}對於main包,使用"_",匯入子命令資料夾,和rootcmd,並呼叫 rootcmd.execute()即可。

這樣新增新的命令不增加新的package時,就不需要更改cli.go,實現了自動註冊的目的。

}完整的**在此

golang命令行庫cobra的使用

golang命令行庫cobra的使用 一 簡介 cobra是乙個golang庫,它提供了乙個簡單的程式設計介面來建立類似於git和go工具的強大的現代cli介面。cobra同時提供了乙個工具,幫程式設計師快速實現cli框架。cobra具有如下強大的功能 2.完全相容posix命令列模式 3.巢狀子命...

golang命令列解析

golang從誕生到現在不到十年,使用者量確一路高漲,這個跟golang系統包提供很多開發者經常要用到的功能多少有些關係。乙個更新的語言,在設計的時候會更多的結合眾多開發者常見的需求,將常用的東西放到基礎包,可以避免大量造輪子。golang基礎包中flag包就是用來解決常見的命令列解析問題。下面來介...

Golang 命令列字型顏色

package main import flag syscall func main cc flag.int i 2,type int flag.parse count int 11 objdll syscall.newlazydll kernel32.dll colorhandle objdll....