我正在尝试在 GO 中实施测试。但是我正在努力处理结构中列表的语法。package primeFactorimport "testing"var testCases = []struct { p int expected []int}{ {15, [3,5]}, {26, [2,13]}, {37, [37]}, {42, [2,3,7]},}func TestPrimeFactor(t *testing.T) { for _, test := range testCases { observed := PrimeFactor(test.p) if observed != test.expected { t.Error("For p = %d, expected %t. Got %t.", test.p, test.expected, observed) } }}我的输出错误是:expected ']', found ',': expected operand, found '{': expected ';', found 'for'我感谢您的帮助。谢谢。
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
你当初为什么这么写?那不是 Go 语法。从规范:
切片文字描述了整个底层数组文字。因此,切片文字的长度和容量是最大元素索引加一。切片文字具有以下形式
[]T{x1, x2, … xn}
所以,在你的情况下:
var testCases = []struct {
p int
expected []int
}{
{15, []int{3, 5}},
{26, []int{2, 13}},
{37, []int{37}},
{42, []int{2, 3, 7}},
}
该规范可读性很强,而且没有人们想象的那么可怕。您可能想要全面了解它并将其放在附近以供参考。
慕容708150
TA贡献1831条经验 获得超4个赞
...为了完整起见,这里只是编写您自己的函数的一个简单示例,您的测试可以调用该函数来比较切片:
func slicesMatch(a, b []int) bool {
la := len(a)
lb := len(b)
if la != lb {
return false
}
for i := 0; i < la; i++ {
if a[i] != b[i] {
return false
}
}
return true
}
- 3 回答
- 0 关注
- 282 浏览
添加回答
举报
0/150
提交
取消