Go flag.PrintDefaults包括`-test`标志

Go flag.PrintDefaults包括`-test`标志,go,command-line,Go,Command Line,我正在Go中构建CLI应用程序 flag.IntVar(&connections, "c", 1, "Connections to keep open per endpoint") flag.IntVar(&duration, "T", 10, "Exit after the specified amount of time in seconds") flag.IntVar(&txsRate, "r", 1000, "Txs per second to send in a

我正在Go中构建CLI应用程序

flag.IntVar(&connections, "c", 1, "Connections to keep open per endpoint")
flag.IntVar(&duration, "T", 10, "Exit after the specified amount of time in seconds")
flag.IntVar(&txsRate, "r", 1000, "Txs per second to send in a connection")
flag.BoolVar(&verbose, "v", false, "Verbose output")

flag.Usage = func() {
    fmt.Println(`....`)
    fmt.Println("Flags:")
    flag.PrintDefaults()
}

flag.Parse()

if flag.NArg() == 0 {
    flag.Usage()
    os.Exit(1)
}
()

出于某种奇怪的原因,上面的代码段生成:

Flags:


-T int
        Exit after the specified amount of time in seconds (default 10)
  -c int
        Connections to keep open per endpoint (default 1)
  -r int
        Txs per second to send in a connection (default 1000)
  -test.bench regexp
        run only benchmarks matching regexp
  -test.benchmem
        print memory allocations for benchmarks
  -test.benchtime d
        run each benchmark for duration d (default 1s)
  -test.blockprofile file
        write a goroutine blocking profile to file
  -test.blockprofilerate rate
        set blocking profile rate (see runtime.SetBlockProfileRate) (default 1)
  -test.count n
        run tests and benchmarks n times (default 1)
  -test.coverprofile file
        write a coverage profile to file
  -test.cpu list
        comma-separated list of cpu counts to run each test with
  -test.cpuprofile file
        write a cpu profile to file
  -test.memprofile file
        write a memory profile to file
  -test.memprofilerate rate
        set memory profiling rate (see runtime.MemProfileRate)
  -test.mutexprofile string
        write a mutex contention profile to the named file after execution
  -test.mutexprofilefraction int
        if >= 0, calls runtime.SetMutexProfileFraction() (default 1)
  -test.outputdir dir
        write profiles to dir
  -test.parallel n
        run at most n tests in parallel (default 2)
  -test.run regexp
        run only tests and examples matching regexp
  -test.short
        run smaller test suite to save time
  -test.timeout d
        fail test binary execution after duration d (0 means unlimited)
  -test.trace file
        write an execution trace to file
  -test.v
        verbose: print additional output
  -v    Verbose output

你知道为什么Go包含
-test
标志吗?谢谢

正如我所看到的,您的代码中有很多依赖项。我发现library
github.com/tendermint/tmlibs/log
依赖于标准库中的包
测试。这个标准库有所有您想知道的标志:

您正在导入“测试”包。别这么想。。。但是看起来测试包确实在搞乱你构建二进制文件的确切命令行是什么?我使用的是
go build
程序间接导入
github.com/tendermint/tmlibs/log
,它导入了
测试
包。找到一种方法来打破对
测试
包的依赖。