方法
DeepEqual方法
官方的reflect
包中有个DeepEqual
方法,可以用来判断任意x和y是否相等。相同类型的两个值可能相等,不同类型的值永远不会相等。
func DeepEqual(x, y interface{}) bool {
if x == nil || y == nil {
return x == y
}
v1 := ValueOf(x)
v2 := ValueOf(y)
if v1.Type() != v2.Type() {
return false
}
return deepValueEqual(v1, v2, make(map[visit]bool), 0)
}
首先DeepEqual
会判断其类型是否相同,接着才会根据类型进行层层判断。
func ReflectSlice(a, b []string) bool {
return reflect.DeepEqual(a, b)
}
循环判断切片中的值
func CompareSlice(a, b []string) bool {
if len(a) != len(b) {
return false
}
if (a == nil) != (b == nil) {
return false
}
for key, value := range a {
if value != b[key] {
return false
}
}
return true
}