本文介绍reflect.DeepEqual使用的几个场景。
比较slice
package main
import (
"fmt"
"reflect"
)
func main() {
s1 := []int{1, 2, 3}
s2 := []int{1, 2, 3}
s3 := []int{3, 1, 2}
fmt.Println(reflect.DeepEqual(s1, s2)) //true
fmt.Println(reflect.DeepEqual(s1, s3)) //false
//fmt.Println(s1 == s2) 编译报错
}
比较map
package main
import (
"fmt"
"reflect"
)
func main() {
m1 := map[string]bool{"dog": true, "cat": false}
m2 := map[string]bool{"cat": false, "dog": true}
m3 := map[string]bool{"cat": false, "dog": false}
fmt.Println(reflect.DeepEqual(m1, m2)) //true
fmt.Println(reflect.DeepEqual(m1, m3)) //false
//fmt.Println(m1 == m2) 编译报错
}