比较两个slicestruct或者map是否相等

Posted timliudream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较两个slicestruct或者map是否相等相关的知识,希望对你有一定的参考价值。

我们可以直接使用reflect.DeepEqual来比较两个slice、struct或者map是否相等

package main

import (
    "fmt"
    "reflect"
)

type A struct {
    s string
}

func main() {

    a1 := A{s: "abc"}
    a2 := A{s: "abc"}
    if reflect.DeepEqual(a1, a2) {
        fmt.Println(a1, "==", a2)
    }

    b1 := []int{1, 2}
    b2 := []int{1, 2}
    if reflect.DeepEqual(b1, b2) {
        fmt.Println(b1, "==", b2)
    }

    c1 := map[string]int{"a": 1, "b": 2}
    c2 := map[string]int{"a": 1, "b": 2}
    if reflect.DeepEqual(c1, c2) {
        fmt.Println(c1, "==", c2)
    }
}

对于slice,我们还可以使用另外一种方法:

func stringSliceEqualBCE(a, b []string) bool {
    if len(a) != len(b) {
        return false
    }

    if (a == nil) != (b == nil) {
        return false
    }

    b = b[:len(a)]
    for i, v := range a {
        if v != b[i] {
            return false
        }
    }

    return true
}

 

以上是关于比较两个slicestruct或者map是否相等的主要内容,如果未能解决你的问题,请参考以下文章

java中如何比较两个数组确定是不是相等?

java使用反射比较两个bean对象属性值是否相等

Java中怎么比较两个字符串是不是相等?

JAVA比较两个字符串是不是相等用啥

JS比较两个数组是否相等 是否拥有相同元素

用JavaScript比较两个数组是否相等