我在包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 關注
- 311 瀏覽
添加回答
舉報
0/150
提交
取消