为什么没有godoc跳过golang中的例子?

时间:2014-07-01 21:13:37

标签: go godoc

我正在尝试制作文档并提供示例,但我并不了解如何,因为godoc正在跳过我的示例。

当我在浏览器上转到localhost:8080/pkg/hello_example时,它会在终端上打印:

2014/07/01 15:54:29 skipping example 'ExampleAuthenticate' because 'Authenticate' is not a known function or type
2014/07/01 15:54:29 skipping example 'ExampleGetAllowAllDriver' because 'GetAllowAllDriver' is not a known function or type
2014/07/01 15:54:29 skipping example 'ExampleGetAndUseAllowAllDriver' because 'GetAndUseAllowAllDriver' is not a known function or type
2014/07/01 15:54:29 skipping example 'ExampleGetAndUseDenyAllDriver' because 'GetAndUseDenyAllDriver' is not a known function or type
2014/07/01 15:54:29 skipping example 'ExampleGetDenyAllDriver' because 'GetDenyAllDriver' is not a known function or type
2014/07/01 15:54:29 skipping example 'ExampleGetRedisDriver' because 'GetRedisDriver' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleAuthenticate' because 'Authenticate' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleGetAllowAllDriver' because 'GetAllowAllDriver' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleGetAndUseAllowAllDriver' because 'GetAndUseAllowAllDriver' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleGetAndUseDenyAllDriver' because 'GetAndUseDenyAllDriver' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleGetDenyAllDriver' because 'GetDenyAllDriver' is not a known function or type
2014/07/01 15:54:30 skipping example 'ExampleGetRedisDriver' because 'GetRedisDriver' is not a known function or type
^C%

我不明白,所以我不能给出任意名称的例子吗?名称是否必须匹配我的包或我的文件的功能名称?这是在我的测试包中,所以我可能正在尝试在不同的包和文件中测试函数。我该怎么做?

1 个答案:

答案 0 :(得分:4)

godoc对名称非常挑剔,您的示例函数名称需要与实际函数名称,类型名称或其他名称相关联。请参阅http://golang.org/pkg/testing/#hdr-Examples以供参考。

godoc exmaple示例:https://godoc.org/github.com/creack/multio#example-Multiplexer--ReadWriter,代码:https://github.com/creack/multio/blob/master/example_test.go

您会注意到,示例名为ExampleMultiplexer_simple ExampleMultiplexer_readWriter。这是因为我想要两个例子,我可以简单地使用ExampleMultiplexer。这是有效的,因为我有一个名为(确切)Multiplexer的类型。如果你有一个功能,你可以这样做,但名称需要匹配。

使用后缀时,后缀以小写字母开头非常重要,否则godoc会丢弃它。

所以回答你的问题:是的,你可以使用任意名称,但你仍然需要遵循ExampleTypeName_suffix(小写后缀第一个字母)的godoc风格