Go语言深度比较值是否相等
- 需求描述:
我们在开发过程中经常会遇到一些需要比较值是否相等的场景,例如比较两个数组、结构体、Map、等,自己写这些代码比较繁琐,大部分时候这里都可以使用到反射reflect包自带的DeepEqual函数处理。
因为用到了反射,所以开销性能方面比较差些,如果实在在意这些,还是自己实现更好。
- 代码示例:
import (
"fmt"
"reflect"
)
func main() {
v1 := data{}
v2 := data{}
fmt.Println("v1 == v2:",reflect.DeepEqual(v1,v2))
//prints: v1 == v2: true
m1 := map[string]string{"one": "a","two": "b"}
m2 := map[string]string{"two": "b", "one": "a"}
fmt.Println("m1 == m2:",reflect.DeepEqual(m1, m2))
//prints: m1 == m2: true
s1 := []int{1, 2, 3}
s2 := []int{1, 2, 3}
fmt.Println("s1 == s2:",reflect.DeepEqual(s1, s2))
//prints: s1 == s2: true
}