-1
Go提供簡單的CLI切換aka標誌。隱藏標誌默認值
var debug = flag.Bool("debug", false, "enable debugging")
var hostname = flag.String("hostname", "127.0.0.1", "hostname")
flag.Parse()
正如預期這會產生
> ./program -h
Usage:
-debug
enable debugging
-hostname string
hostname (default "127.0.0.1")
我想隱藏特定標誌的(default "127.0.0.1")
一部分。
在SO上搜索和建議使用flag.FlagSet。
var shown flag.FlagSet
var hidden flag.FlagSet
var debug = shown.Bool("debug", false, "enable debugging")
var hostname = hidden.String("hostname", "127.0.0.1", "hostname")
flag.Usage = func() {
shown.PrintDefaults()
}
flag.Parse()
//shown.Parse(os.Args[0:]) // tried to solve "flag provided but not defined"
輸出部分只顯示「調試」標誌,但是這會中斷實際標誌的使用。
> ./program -debug
flag provided but not defined: -debug
Usage of ./program:
-debug
enable debugging
這也不是很理想,因爲我想看到可用的標誌,只是隱藏默認值。
希望的輸出:
> ./program -h
Usage:
-debug
enable debugging
-hostname string
hostname
打印默認值有一個原因。不要禁用它們。 – Volker
你有沒有試過給它一個空的默認值,並檢查你的程序是空的,並用真正的默認值替代? –
@Volker請詳細說明。 – liepumartins