Go 戈朗的数组比较

Go 戈朗的数组比较,go,Go,我需要比较uint32的两个数组,类似这样的东西 func in(a uint32, list []uint32) bool { for _, b := range list { if b == a { return true } } return false } for n := 0 ;n < len(a); n++ { fmt.P

我需要比较uint32的两个数组,类似这样的东西

   func in(a uint32, list []uint32) bool {
        for _, b := range list {
            if b == a {
                return true
            }
        }
        return false
    }
for n := 0 ;n < len(a); n++ {
        fmt.Println(in(a[n], b))
    }
// a and b []uint32
(一个uint32,列表[]uint32)bool中的函数{ 对于u,b:=范围列表{ 如果b==a{ 返回真值 } } 返回错误 } 对于n:=0;n
但我认为这并不是最理想的方法

如果您实际使用的是数组,为什么不直接使用
=

如果数组元素类型的值具有可比性,则数组值具有可比性。如果两个数组值对应的元素相等,则两个数组值相等

如果您使用的是切片,则可以使用
reflect.DeepEqual

但是,从您的代码来看,似乎您应该

然后,创建两个
intset.Sparse
,然后可以执行以下操作:

func main() {
    s1 := intsets.Sparse{}
    s2 := intsets.Sparse{}
    s1.Insert(1)
    s1.Insert(2)
    s1.Insert(3)
    s2.Insert(1)
    s2.Insert(2)
    //s1:{1,2,3}
    //s2:{1,2}
    fmt.Println(s1.SubsetOf(&s2), s2.SubsetOf(&s1))
    //false, true
}

它将忽略重复项,但会让您知道s1是否是s2的子集,这意味着s1中的每个元素都存在于s2中。

因此,如果数组完全相同(包括它们的顺序),它应该只返回
true
?如果不需要考虑顺序,请先对它们排序,然后与
=
进行比较。它应该是对数的,而不是多项式的。
[]uint32
不是数组,而是切片。