Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
go程序包声明包含2个以上单词并用下划线分隔的问题_Go_Go Modules_Go Packages_Go Testing - Fatal编程技术网

go程序包声明包含2个以上单词并用下划线分隔的问题

go程序包声明包含2个以上单词并用下划线分隔的问题,go,go-modules,go-packages,go-testing,Go,Go Modules,Go Packages,Go Testing,每个人,我都被眼前的景象弄糊涂了;我有以下树: ├── go.mod ├── main.go └── server ├── server.go └── server_integration_test.go 假设我的模块名(mod.go)是gotest。server.go的内容: 包服务器 类型MyStruct struct{ 你好字符串 } func(m MyStruct)SayHello()字符串{ 返回m。你好 } 服务器集成测试的内容。转到: 包服务器\u集成\u测试

每个人,我都被眼前的景象弄糊涂了;我有以下

├── go.mod
├── main.go
└── server
    ├── server.go
    └── server_integration_test.go
假设我的模块名(
mod.go
)是
gotest
server.go的内容

包服务器
类型MyStruct struct{
你好字符串
}
func(m MyStruct)SayHello()字符串{
返回m。你好
}
服务器集成测试的内容。转到:

包服务器\u集成\u测试
进口(
“测试”
)
函数测试集成(t*testing.t){
t、 Errorf(“即将失败!”)
}
最后是我的
main
.go`:

主程序包
进口(
“fmt”
“gotest/server”
)
func main(){
my:=server.MyStruct{Hello:“我的结构”}
fmt.Println(“来自mystruct”,my.SayHello())
}
当我运行
go build
(或
go test./…
)时,我收到以下错误:

main.go:5:2: found packages server (server.go) and server_integration (server_integration_test.go) in /tmp/gotest/server
但是如果我将我的
服务器\u集成\u测试更改为:

包服务器\u测试
// ...
一切正常


有人能解释一下这里发生了什么吗?

支持的
server
包测试的包名是
server
server\u test

见:

“Go test”重新编译每个包以及名称与文件模式“*\u test.Go”匹配的任何文件。这些附加文件可以包含测试函数、基准函数和示例函数

声明后缀为“_Test”的包的测试文件将编译为单独的包,然后与主测试二进制文件链接并运行


\u test
后缀应用于被测包的名称(可以改进文档以使这一事实更加明确)。

请参阅。
go test
命令支持_test.go文件中的两个包名:目录中的包名和带有
\u test
后缀的目录中的包名。软件包名
server\u integration\u test
失败,因为它不是
server
server\u test
@CeriseLimón。请写下,作为回答而不是评论。谢谢你,Cerise,我尝试从你提供的链接中查找信息,但我无法找到。你介意在那里加上一句话或其他什么吗?