Go示例函数是什么?

11

Go的测试包提到了示例函数,例如:

func Example() { ... }
func ExampleF() { ... }
func ExampleT() { ... }
func ExampleT_M() { ... }

这些的意义和使用情况是什么?


我认为你提供的文档没有任何不清楚之处。我的看法是,你的问题等同于“规范中提到了'int',它的含义和用途是什么?”也就是说,这个问题过于模糊或基础,或者根本没有真正的问题,因此毫无用处。 - Dave C
1
@icza的回答非常准确。文档没有提到示例函数是如何与godoc一起使用的,因此我不清楚您将如何使用它们。 - Calin
1个回答

12

示例函数是您所记录的包、函数或其他代码的用法示例。示例函数将以源代码形式包含在生成的godoc中(而其他函数则不会),并进行适当格式化和一些处理,例如如果示例函数的最后一行包含输出,则格式如下:

func ExampleExamples_output() {
    fmt.Println("Hello")
    // Output: Hello
}

最后指定输出的行将被剥离并以单独的块呈现,如此处所示:Example (Output)

如果提供了输出,运行包的测试套件(例如使用go test)也会执行示例函数,无需您进行进一步的安排,Go将比较示例函数的输出与最后一个注释行中指定的输出-这个结果将决定此示例函数是否“测试”通过。如果在示例函数中未指定输出,则go test仅编译它,但不会执行它。

请查看此页面:package godoctricks

还发布了一篇关于示例函数的博客文章:

在 Go 中进行可测试的示例


一个额外的愚蠢语法点:在 // Output: 注释中,单词 Output: 之间不能有空格。否则,Example函数将不被视为测试用例。 - LeGEC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接