新聞中心
基本介紹
命名行解析最主要的是針對(duì)于選項(xiàng)的解析,?gcmd?組件提供了?Parse?方法,用于自定義解析選項(xiàng),包括有哪些選項(xiàng)名稱(chēng),每個(gè)選項(xiàng)是否帶有數(shù)值。根據(jù)這一配置便可將所有的參數(shù)和選項(xiàng)進(jìn)行解析歸類(lèi)。

大部分場(chǎng)景下,我們并不需要顯式創(chuàng)建?Parser?對(duì)象,因?yàn)槲覀冇袑蛹?jí)管理以及對(duì)象管理方式來(lái)管理多命令。但底層仍然是采用?Parser?方式實(shí)現(xiàn),因此本章節(jié)大家了解原理即可。
相關(guān)方法:
更多?Parser?方法請(qǐng)參考接口文檔:https://pkg.GO.dev/github.com/gogf/gf/v2/os/gcmd#Parser
func Parse(supportedOptions map[string]bool, strict ...bool) (*Parser, error)
func ParseWithArgs(args []string, supportedOptions map[string]bool, strict ...bool) (*Parser, error)
func ParserFromCtx(ctx context.Context) *Parser
func (p *Parser) GetArg(index int, def ...string) *gvar.Var
func (p *Parser) GetArgAll() []string
func (p *Parser) GetOpt(name string, def ...interface{}) *gvar.Var
func (p *Parser) GetOptAll() map[string]string解析示例:
parser, err := gcmd.Parse(g.MapStrBool{
"n,name": true,
"v,version": true,
"a,arch": true,
"o,os": true,
"p,path": true,
})可以看到,選項(xiàng)輸入?yún)?shù)其實(shí)是一個(gè)?map?類(lèi)型。其中鍵值為選項(xiàng)名稱(chēng),同一個(gè)選項(xiàng)的不同名稱(chēng)可以通過(guò),符號(hào)進(jìn)行分隔。比如,該示例中?n?和?name?選項(xiàng)是同一個(gè)選項(xiàng),當(dāng)用戶輸入?-n john?的時(shí)候,?n?和?name?選項(xiàng)都會(huì)獲得到數(shù)據(jù)?john?。
而鍵值是一個(gè)布爾類(lèi)型,標(biāo)識(shí)該選項(xiàng)是否需要解析參數(shù)。這一選項(xiàng)配置是非常重要的,因?yàn)橛械倪x項(xiàng)是不需要獲得數(shù)據(jù)的,僅僅作為一個(gè)標(biāo)識(shí)。例如,?-f force?這個(gè)輸入,在需要解析數(shù)據(jù)的情況下,選項(xiàng)?f?的值為?force?;而在不需要解析選項(xiàng)數(shù)據(jù)的情況下,其中的?force?便是命令行的一個(gè)參數(shù),而不是選項(xiàng)。
使用示例
func ExampleParse() {
os.Args = []string{"gf", "build", "main.go", "-o=gf.exe", "-y"}
p, err := gcmd.Parse(g.MapStrBool{
"o,output": true,
"y,yes": false,
})
if err != nil {
panic(err)
}
fmt.Println(p.GetOpt("o"))
fmt.Println(p.GetOpt("output"))
fmt.Println(p.GetOpt("y") != nil)
fmt.Println(p.GetOpt("yes") != nil)
fmt.Println(p.GetOpt("none") != nil)
// Output:
// gf.exe
// gf.exe
// true
// true
// false
}
本文名稱(chēng):創(chuàng)新互聯(lián)GoFrame教程:GoFrame命令管理-Parser解析
地址分享:http://www.dlmjj.cn/article/djcjhpo.html


咨詢(xún)
建站咨詢(xún)
