下面的代码是对 Python 脚本的改编。当然,它不能编译,这有几个原因。我正在努力理解如何修复它以提供正确的结果。特别是:我想表示一种类型 ( float64) 或array这种类型的an所以我天真地使用 an[]interface但是然后传递一个数组将不起作用。我知道我可以用我的数组深度复制一个接口数组,但这是唯一的方法吗?反射检查有效(有点),但后来我又回到将接口转换为 an[]interface并且不起作用。一种更简单的方法是通过,[]float但我也想让代码通用(哎呀!;-)足以接受[][]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}})}
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
这是实现 assertArrayEquals 的一种方法:
func assertArrayEquals(first interface{}, second interface{}) bool {
return reflect.DeepEqual(first, second)
}
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消