Go 戈朗的数组比较
我需要比较uint32的两个数组,类似这样的东西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
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
不是数组,而是切片。