猿问

Go 语言:在包范围内使用包名(示例)

我目前正在编写ExampleFuncs我的 Go 测试脚本。例如:


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在包范围内允许符号?


素胚勾勒不出你
浏览 233回答 1
1回答

撒科打诨

与其把它放在包里hello,不如把它放在包里hello_test。您可以在同一目录中同时拥有hello和hello_test包,并且它允许(要求)您按照建议的方式创建示例。顺便说一句,这也会导致您仅将测试用例(至少对于此文件)写入公共 API。这通常是一件好事。但是如果您需要写入私有函数,您可以将您的测试拆分为单独的文件,一些在hello包中,一些在hello_test.顺便说一句,这方面的文档有点被埋没了。您可以在go cmd 文档的“测试包”部分找到它。
随时随地看视频慕课网APP

相关分类

Go
我要回答