下面的代码是Python脚本的改编。当然,它没有编译,这有几个原因。
我正在努力了解如何修复它以便它能够提供正确的结果。
特别是:
我想表示此类型的类型(float64
)或array
,所以我天真地使用[]interface
但是然后传递数组赢了'工作。我明白我可以用我的数组深度复制一个接口数组,但这是唯一的方法吗?
反射检查有效(有点),但后来我又回到了[]interface
的界面,并且没有工作。
一种更简单的方法是传递[]float
,但我也想让代码通用(oops!;-)足以接受[][]floats
并递归下降与比较。
我完全偏离了吗?
func assertArrayEquals(first []interface{}, second []interface{}) bool {
if len(first) != len(second) {
return false
}
for i := range first {
if reflect.ValueOf(first[i]).Kind() == reflect.Array {
assertArrayEquals([]interface{}(first[i]), []interface{}(second[i]))
} else if second[i] != first[i] {
return false
}
}
return true
}
func main() {
assertArrayEquals([]float64{[]float64{0, 1}, []float64{0, 1}}, []float64{[]float64{0, 1}, []float64{0, 1}})
}
答案 0 :(得分:1)
这是实现assertArrayEquals的一种方法:
func assertArrayEquals(first interface{}, second interface{}) bool {
return reflect.DeepEqual(first, second)
}