我目前正在我的 Go 测试脚本中编写 ExampleFuncs
。例如:
package hello
import "testing"
func ExampleGetSymbol() {
data := GetSymbol("AAPL")
fmt.Println(len(data.Data))
// Output: 21
}
现在,这给我带来了两个好处:
- 此示例在我运行
go test
时执行, - 它出现在 godoc 文档的
func GetSymbol
下
有一件事困扰着我,我想知道我是否应该对此做些什么。 对于尝试从此示例中学习的用户,该行
data := GetSymbol("AAPL")
实际上应该是
data := hello.GetSymbol("AAPL")
但是由于测试与包的范围相同,所以我不能这样使用它。
所以我想我的问题的精炼版本是:
有没有办法在包范围内允许 package.field
表示法?
提前致谢
最佳答案
不要将其放入 hello
包中,而是将其放入 hello_test
包中。您可以在同一目录中同时拥有 hello
和 hello_test
包,并且它允许(要求)您按照您建议的方式创建示例。
顺便说一句,这也会导致您仅将测试用例(至少对于此文件)写入公共(public) API。这通常是一件好事。但如果您需要写入私有(private)函数,则可以将测试拆分为单独的文件,一些位于 hello
包中,一些位于 hello_test
中。
顺便说一句,这方面的文档有点被埋没了。您可以在go cmd documentation的“测试包”部分找到它。 .
关于Go语言: Using package name inside package scope (for Examples),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267359/