DeepEqual []interface{}



查看以下 golang 代码:

b := []byte(`["a", "b"]`)
var value interface{}
json.Unmarshal(b, &value)
fmt.Println(value)                 // Print [a b]
fmt.Println(reflect.TypeOf(value)) //Print []interface {}
var targetValue interface{} = []string{"a", "b"}
if reflect.DeepEqual(value.([]interface{}), targetValue) {
    t.Error("please be equal")
}

我对DeepEqual的期望是否过高?阅读文档,以下陈述强化了我假设它应该有效:

    当数组值的相应元素深度相等
  • 时,数组值是深度相等的。
  • 如果接口值具有非常相等的具体值,则它们就是深度相等的。
  • 当 (...( 或其相应的元素(直至长度(深度相等时,切片值非常相等。

我在这里错过了什么?

您正在将[]interface{}[]string进行比较,后者永远不应该相等。

if reflect.DeepEqual(value.([]interface{}), targetValue) {

[]stringtargetValue相比:

var targetValue interface{} = []string{"a", "c"}

相关内容

  • 没有找到相关文章

最新更新