我在包pack1下有以下代码。文件名是pack1.gopackage pack1var Pack1Int int = 42var pack1Float = 3.14func ReturnStr() string { return "Hello world!"}以及主程序中的以下代码。文件名是package_test.gopackage mainimport ( "fmt" "./pack1")func main() { var test1 string test1 = pack1.ReturnStr() fmt.Printf("Return string from pack1 : %s\n", test1) fmt.Printf("Integer from pack1 : %d\n", pack1.Pack1Int)}当我尝试使用命令运行它时,出现go run package_test.go以下错误:go run: cannot run *_test.go files (package_test.go)但是如果我将文件重命名为abc.go那么我会得到正确的输出,即Return string from pack1 : Hello world!Integer from pack1 : 42我很好奇使用package_test.goas 文件名有什么问题。对于只有主包的代码,这个名称工作正常。这是 Go 中的错误还是我做错了什么?
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
不是错误,它是这样设计的。go run
检测_test
文件并将它们视为包的测试文件,测试文件将被编译为单独的包,然后与主测试二进制文件链接并运行。
建议把你的包文件放到GOPATH/src/PACK_NAME/
,然后*_test.go
用go test
.
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消