2017-07-17 55 views
1

如何確保每個標誌參數都是從命令行設置的?我想這樣做,而不是專門檢查每個標誌名稱,而是想動態地檢查所有標誌。檢查是否設置了所有標誌(沒有標誌空白)

這裏是我的代碼,main.go

package main 

import (
    "fmt" 
    "flag" 
) 

func main() { 
    x := flag.String("x", "", "x flag") 
    y := flag.String("y", "", "y flag") 
    flag.Parse() 
} 

我運行它,例如,像這樣的:go run main.go -x hello

回答

4

這可以通過使用VisitAll功能來實現。

VisitAll按照字典順序訪問命令行標誌,爲每個命令調用fn。它訪問所有的標誌,甚至沒有設置。

示例代碼(flag.Parse()之後添加):

flag.VisitAll(func (f *flag.Flag) { 
    if f.Value.String()=="" { 
     fmt.Println(f.Name, "not set!") 
    } 
})