我的目標(biāo)是讓“init”、“init -site=test”、兩個(gè)版本的 init 以及獨(dú)立的“debug”命令在命令行上被接受,并將剩下的任何內(nèi)容視為文件名。實(shí)際發(fā)生的情況是,在“init -site=test”的情況下,由于某種原因,“-site=test”也被接受為文件名。我怎樣才能阻止這種情況發(fā)生?package mainimport ( "flag" "fmt" "os")func main() { initCmd := flag.NewFlagSet("init", flag.ExitOnError) initSiteName := initCmd.String("site", "", "Main name for your site") flag.Parse() for pos, cmd := range os.Args { switch cmd { case "debug": fmt.Printf("debug\n") case "init": initCmd.Parse(os.Args[pos+1:]) fmt.Printf("init\n site name:%v\n", *initSiteName) default: fmt.Printf("Filename: %v\n", cmd); } }}
1 回答

呼如林
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用該包不是很方便flag
。來自文檔:
標(biāo)志解析在第一個(gè)非標(biāo)志參數(shù)(“-”是非標(biāo)志參數(shù))之前或終止符“--”之后停止。
您必須手動執(zhí)行此操作:
解析后,標(biāo)志后面的參數(shù)可用作切片 flag.Args() 或單獨(dú)用作 flag.Arg(i)。
或者您可以使用另一個(gè)包。
- 1 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消