在Eclipse中使用两个Go文件时遇到的问题
在Eclipse中使用两个Go文件时遇到的问题 大家好,我是Go语言的新手,正在使用Eclipse进行Go开发。
有人知道如何在Eclipse中构建和运行包含两个文件的项目吗?我创建了一个包含测试函数的第一个文件,以及一个定义结构体数组的第二个文件。它们位于相同的src目录和相同的包中。
第一个文件:
import ( "math" "testing")
func TestData(t *testing.T) {
const precision = 0.01
for _, tc := range testExamples {
actual := DataTest(tc.FirstValue, tc.SecondValue)
if ... {
t.Fatalf("FAIL: %s\nExpected: %#v\nActual: %#v", tc.description, tc.expected, actual)
}
t.Logf("PASS: %s", tc.description)
}
}
第二个文件:
var testCases = []struct {
description string
valuex string
valuey string
expected float64
}{
{
description: "example1",
FirstValue: xxxxx,
SecondValue: yyyyy,
expected: 10,
},{
description: "example2",
FirstValue: xxxxx,
SecondValue: yyyyy,
expected: 280,
}
}
在第一个文件中,Eclipse报告:undefined: testCases
我认为问题可能与自动编译没有考虑到这两个文件有关。有人有什么建议吗?
谢谢
你写了包声明吗?你这里的示例中缺少了包声明…
你有什么建议吗? 谢谢
您的函数是否在 main 函数内部被调用?如果没有,请尝试在该函数内部调用它们。
是的,很抱歉。我忘记在帖子中写明,但在这两个文件中我都写了包声明:package main。
在终端中使用 go build 能正常工作吗?
// 代码示例
func main() {
fmt.Println("hello world")
}
我没有在我的应用程序中放置主函数,因为我似乎理解执行测试函数不是必需的。
我尝试手动构建,但总是遇到相同的错误,就好像它没有看到我在另一个go文件中声明的测试用例一样。
你有什么建议吗?
即使在使用测试用例时,是否仍然需要使用主函数?
很抱歉这么晚才回复,因为最近工作太忙时间不够。
不过,现在说这些可能已经太迟了。重新阅读后发现您的问题是关于测试的。老实说,我还没有学习Go语言的测试相关内容,所以很抱歉无法提供帮助。真的非常抱歉。
在Eclipse中处理多个Go文件时,出现"undefined: testCases"错误通常是因为Go工具没有同时编译所有相关文件。以下是解决方案:
- 确保两个文件都在同一个包中(package声明相同)
- 使用正确的构建命令编译所有文件
示例代码结构:
第一个文件 main_test.go:
package main
import (
"math"
"testing"
)
func TestData(t *testing.T) {
const precision = 0.01
for _, tc := range testCases {
actual := DataTest(tc.FirstValue, tc.SecondValue)
diff := math.Abs(actual - tc.expected)
if diff > precision {
t.Fatalf("FAIL: %s\nExpected: %#v\nActual: %#v", tc.description, tc.expected, actual)
}
t.Logf("PASS: %s", tc.description)
}
}
第二个文件 test_data.go:
package main
var testCases = []struct {
description string
FirstValue string
SecondValue string
expected float64
}{
{
description: "example1",
FirstValue: "xxxxx",
SecondValue: "yyyyy",
expected: 10,
}, {
description: "example2",
FirstValue: "xxxxx",
SecondValue: "yyyyy",
expected: 280,
},
}
在Eclipse中构建时,需要使用以下命令:
go test
或者如果这是主程序:
go build
如果问题仍然存在,检查Eclipse的Go插件配置:
- 确保项目配置正确指向Go工作区
- 验证两个文件都在同一个包目录下
- 清理并重新构建项目
在Eclipse中,可以右键点击项目 → Run As → Go Test 来执行测试。

