当前位置: 首页 > 面试题库 >

使用go build但我也看到-test标志

姬博瀚
2023-03-14
问题内容

我有一个main.gomypkg/...go。我使用go build -o main main.gogo install <pkg that has main.go>并且其中有一些我需要的标志。但是我也看到了测试标志。为什么会这样呢?我想念什么?

Usage of ./main:
  -docker string
        Docker API Path, defaults to local (default "unix:///var/run/docker.sock")
  -httptest.serve string
        if non-empty, httptest.NewServer serves on this address and blocks
  -port int
        The default port to listen (default 8000)
  -test.bench string
        regular expression per path component to select benchmarks to run
  -test.benchmem
        print memory allocations for benchmarks
  -test.benchtime duration
        approximate run time for each benchmark (default 1s)
  -test.blockprofile string
        write a goroutine blocking profile to the named file after execution
  -test.blockprofilerate int
        if >= 0, calls runtime.SetBlockProfileRate() (default 1)

dockerPath和port是我的标志,但是您可以看到其他不是我的标志。


问题答案:

您最有可能使用flag.FlagSetflag程序包的默认标志集()。请注意,您可能不是唯一使用它的人。如果导入其他软件包,它们也可能会注册标志,这些标志将像您自己的标志(已注册的标志)一样进行处理。

看这个简单的例子:

import (
    "flag"
    _ "testing"
)

func main() {
    flag.Int("port", 80, "port to use")
    flag.Parse()
}

这个程序注册一个port标志,别无其他。但是它也导入了testing注册很多标志的包。

使用-h命令行参数运行它,输出为:

  -port int
        port to use (default 80)
  -test.bench string
        regular expression per path component to select benchmarks to run
  -test.benchmem
        print memory allocations for benchmarks
  -test.benchtime duration
        approximate run time for each benchmark (default 1s)
  -test.blockprofile string
        write a goroutine blocking profile to the named file after execution
  -test.blockprofilerate int
        if >= 0, calls runtime.SetBlockProfileRate() (default 1)
  -test.count n
        run tests and benchmarks n times (default 1)
  -test.coverprofile string
        write a coverage profile to the named file after execution
  -test.cpu string
        comma-separated list of number of CPUs to use for each test
  -test.cpuprofile string
        write a cpu profile to the named file during execution
  -test.memprofile string
        write a memory profile to the named file after execution
  -test.memprofilerate int
        if >=0, sets runtime.MemProfileRate
  -test.outputdir string
        directory in which to write profiles
  -test.parallel int
        maximum test parallelism (default 4)
  -test.run string
        regular expression to select tests and examples to run
  -test.short
        run smaller test suite to save time
  -test.timeout duration
        if positive, sets an aggregate time limit for all tests
  -test.trace string
        write an execution trace to the named file after execution
  -test.v
        verbose: print additional output
exit status 2

如果您不希望将自己的标志与其他程序包的标志混合使用,请flag.FlagSet通过调用来创建和使用自己的标志flag.NewFlagSet(),但是当然您必须使用其方法而不是flag程序包的顶级功能。



 类似资料:
  • gobuild.io 是一个提供 golang 在线编译的网站。目前已重新上线 有很多很多优秀的工具是用 golang 写出来的。不过最大的开源网站 github.com 只提供代码的托管,并不提供二进制文件的下载。该网站将代码的编译与二进制的分享结合了起来,给无数人带来了便利。 比如一个项目的地址是 github.com/beego/bee,而二进制文件的下载直接前往 gobuild.io/be

  • 我有一个奇怪的问题。 我的Mac上安装了一台带有iOS 5.0.1(9A405)的iPad和带有Xcode 4.2(Build 4C199)的iOS SDK 5.0.1。 Xcode看不到我的设备。它说的是“iOS设备”而不是像往常一样的“索伦iPad”。 (我确信该设备已连接,因为我在iTunes中看到它。)Xcode拒绝在该设备上启动我的应用程序。它说: “Xcode无法使用所选设备运行。没有

  • 我的物理设备是华为LUA-22,Android 5.1。android工作室看不到那部手机,但ADB看到了。启用了Usb调试。尝试将MTP更改为PTP,但不起作用。

  • 我想让这些缩略图更小一些,在页面中间更靠近一些,我设法做到了,但即使缩略图保持响应性,标题容器却不是,当我缩小和放大页面时,它的大小保持不变。现在的代码工作得很好,但当我想让缩略图更小一些,更靠近一些时,一切都走下坡路了。 有谁能帮助我使文本也是有反应的吗? null null

  • https://github.com/thtrieu/darkflow 在Ubuntu 20.04 我认为我的flow文件有问题,所以我试图通过以下代码重建构建文件 这就是我得到的。 设置。py:6:弃用警告:imp模块已弃用,取而代之的是importlib;有关导入imp运行build_ext building“暗流”的替代用途,请参阅模块文档。cython_utils。nms的扩展名x86_6

  • 我想用jQuery DataTable进行多列筛选,但我得到一个错误,不知道如何解决。 错误:$(...)DataTable不是函数类型错误:$(...)。DataTable不是函数未捕获的类型错误:无法读取未定义的属性“column” 你能帮我解决这个错误吗? 我的HTML代码,