亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何迭代命令行參數并收集標志后剩下的內容?

如何迭代命令行參數并收集標志后剩下的內容?

Go
泛舟湖上清波郎朗 2023-07-31 17:14:03
我的目標是讓“init”、“init -site=test”、兩個版本的 init 以及獨立的“debug”命令在命令行上被接受,并將剩下的任何內容視為文件名。實際發生的情況是,在“init -site=test”的情況下,由于某種原因,“-site=test”也被接受為文件名。我怎樣才能阻止這種情況發生?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貢獻1798條經驗 獲得超3個贊

使用該包不是很方便flag。來自文檔:

標志解析在第一個非標志參數(“-”是非標志參數)之前或終止符“--”之后停止。

您必須手動執行此操作:

解析后,標志后面的參數可用作切片 flag.Args() 或單獨用作 flag.Arg(i)。

或者您可以使用另一個包。


查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號