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
}