Loading

go中数组和切片slice的比较问题

go中的数组是带有长度和基本类型的
[3]int[2]int是两个不同的类型
所以对于普通的数组类型直接使用==就可以比较两个数组是否相同

但是对于slice则不能使用==进行判断,因为slice的变量实际是一个指针,
使用 == 其实在判断地址

解放方法是使用反射 reflect.DeepEqual

func DeepEqual(x, y interface{}) bool

或者自己造轮子,暴力检查
当slice的类型确定时使用此种方法比较简单

例:

func equal(a, b []int) bool {
    if (a == nil) != (b == nil) {
        return false;
    }
    if len(a) != len(b) {
        return false
    }
    for i := range a {
        if a[i] != b[i] {
            return false
        }
    }
    return true
}
posted @ 2022-08-26 16:27  北方Cc  阅读(120)  评论(0)    收藏  举报