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
}
本文来自博客园,作者:北方Cc,转载请注明原文链接:https://www.cnblogs.com/beifangcc/p/16627982.html

浙公网安备 33010602011771号