日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame命令管理-Parser解析

基本介紹

命名行解析最主要的是針對于選項的解析,?gcmd?組件提供了?Parse?方法,用于自定義解析選項,包括有哪些選項名稱,每個選項是否帶有數(shù)值。根據(jù)這一配置便可將所有的參數(shù)和選項進行解析歸類。

大部分場景下,我們并不需要顯式創(chuàng)建?Parser?對象,因為我們有層級管理以及對象管理方式來管理多命令。但底層仍然是采用?Parser?方式實現(xiàn),因此本章節(jié)大家了解原理即可。

相關(guān)方法:

更多?Parser?方法請參考接口文檔: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,
})

可以看到,選項輸入?yún)?shù)其實是一個?map?類型。其中鍵值為選項名稱,同一個選項的不同名稱可以通過,符號進行分隔。比如,該示例中?n?和?name?選項是同一個選項,當(dāng)用戶輸入?-n john?的時候,?n?和?name?選項都會獲得到數(shù)據(jù)?john?。

而鍵值是一個布爾類型,標識該選項是否需要解析參數(shù)。這一選項配置是非常重要的,因為有的選項是不需要獲得數(shù)據(jù)的,僅僅作為一個標識。例如,?-f force?這個輸入,在需要解析數(shù)據(jù)的情況下,選項?f?的值為?force?;而在不需要解析選項數(shù)據(jù)的情況下,其中的?force?便是命令行的一個參數(shù),而不是選項。

使用示例

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
}

當(dāng)前題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame命令管理-Parser解析
轉(zhuǎn)載來源:http://m.5511xx.com/article/djcjhpo.html