golang flag来自打印默认值的隐藏选项

时间:2017-10-13 12:42:29

标签: go

这是我的实际代码:

package main

import (
    "flag"
)

var loadList  = "" 
var threads   = 50
var skip      = 0


func main() {

    //defaults variables
    flag.StringVar(&loadList, "f", "", "load links list file (required)") 
    flag.IntVar(&threads,"t", 50, "run `N` attempts in parallel threads")
    flag.IntVar(&skip, "l", 0, "skip first `n` lines of input")
    flag.Parse()

    flag.PrintDefaults()

}

这是输出:

-f string         加载链接列表文件(必填)   -l n         跳过前n行输入   -t N.         在并行线程中运行N次尝试(默认为50)

我想从printdefaults -l和-t隐藏,我该怎么做?

1 个答案:

答案 0 :(得分:0)

可能有多种方法可以做到这一点。一个简单的方法是使用VisitAll

func VisitAll(fn func(*Flag))

在您传递的函数中,您可以决定是否根据Flag的任何导出字段输出标记。

示例:

flag.VisitAll(func(f *flag.Flag) {
    if f.Name == "l" || f.Name == "t" {
        return
    }
    fmt.Println("Flag: ", f)
})

https://play.golang.org/p/rsrKgWeAQf

运行它