为什么Equal和DeepEqual有区别?
s1 := "abc"
s2 := "abc"
sv1 := reflect.ValueOf(s1)
sv2 := reflect.ValueOf(s2)
fmt.Println(sv1.Equal(sv2))
fmt.Println(reflect.DeepEqual(sv1, sv2))
第一个打印 true,第二个打印 false。
我认为你已经在元级 foo 上走了很远了。
s1 := "abc"
s2 := "abc"
sv1 := reflect.ValueOf(s1)
sv2 := reflect.ValueOf(s2)
fmt.Println(s1 == s2)
fmt.Println(reflect.DeepEqual(s1, s2))
fmt.Println(sv1 == sv2)
fmt.Println(sv1.Equal(sv2))
fmt.Println(reflect.DeepEqual(sv1, sv2))
给出:
true
true
false
true
false
深度等于增加了递归性,正确的,并且在检查具体类型时可以正确工作。但
reflect.Value
对象具有不同的表示形式。
您有什么具体原因要查询
reflect.Value
对象吗?
无论如何,希望这会有所帮助。