为了账号安全,请及时绑定邮箱和手机立即绑定

铸造接口可以反映数组类型

铸造接口可以反映数组类型

Go
当年话下 2022-01-04 14:06:38
下面的代码是对 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)

}


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信