我需要比较2个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
但我认为这不是最佳方式
答案 0 :(得分:3)
如果您实际使用数组,为什么不使用==
?
https://golang.org/ref/spec#Comparison_operators
如果数组元素类型的值具有可比性,则数组值是可比较的。如果相应的元素相等,则两个数组值相等。
如果您使用切片,则可以使用reflect.DeepEqual
。
但是,从您的代码中,您似乎应该查看https://godoc.org/golang.org/x/tools/container/intsets
然后,您创建了两个intsets.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中。