借助reflect.DeepEqual
可以实现两个slice和map的判等操作。
但是注意都说reflect是比较耗费性能的,如果真的
对性能比较敏感的话自己写个for循环一个一个比较去吧。
package main
import (
"fmt"
"reflect"
)
func main() {
// ============ slice 判等 ============
{
var a = []int{
11, 22, 33}
var b = []int{
11, 22, 33}
fmt.Println(reflect.DeepEqual(a, b)) // true
}
{
var a = []int{
11, 22, 33}
var b = []int{
11}
fmt.Println(reflect.DeepEqual(a, b)) // false
}
{
var a = []int{
11, 22, 33}
var b = []int64{
11, 22, 33}
fmt.Println(reflect.DeepEqual(a, b)) // false
}
// ============ map 判等 ============
{
var a = map[string]int{
"a": 11,
"b": 22,
}
var b = map[string]int{
"a": 11,
"b": 22,
}
fmt.Println(reflect.DeepEqual(a, b)) // true
}
{
var a = map[string]int{
"a": 11,
"b": 22,
}
var b = map[string]int{
"a": 11,
}
fmt.Println(reflect.DeepEqual(a, b)) // false
}
}
参考链接:
https://www.cnblogs.com/apocelipes/p/11116725.html
http://shouce.jb51.net/gopl-zh/ch13/ch13-03.html
https://halfrost.com/go_slice/