zzz*_*zzz 30
要比较两个数组,请使用比较运算符 ==或!=.引用链接:
如果数组元素类型的值具有可比性,则数组值是可比较的.如果它们的相应元素相等,则两个数组值相等.
由于2D(或ND)阵列符合上述要求,您可以以相同的方式对其进行比较.
问题是"这种比较有多深?" 对数组没有意义.
Int*_*net 20
对于"深度"比较,您可以使用reflect.DeepEqual.
DeepEqual测试深度相等.它尽可能使用normal == equality,但会扫描数组,切片,映射和结构域的元素.在地图中,键与==进行比较,但元素使用深度相等.DeepEqual正确处理递归类型.只有当它们都是零时,函数才是相等的.空切片不等于零切片.
例:
package main
import (
"bytes"
"fmt"
"reflect"
)
func main() {
a := []byte{} // empty slice
b := []byte(nil) // nil slice
fmt.Printf("%t\n%t", bytes.Equal(a, b), reflect.DeepEqual(a, b))
}
Run Code Online (Sandbox Code Playgroud)
返回:
真
假
需要注意的是,它很慢.
如果您有2个int切片/阵列,请尝试以下方法:
func IntArrayEquals(a []int, b []int) bool {
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
注意:这适用于1D阵列,但您可以将其重写为2D.