当前位置: 首页 > 知识库问答 >
问题:

检查两个切片的相等性

羊舌迪
2023-03-14

如何检查两个切片是否相等?

共有3个答案

朱宇航
2023-03-14

这只是使用反射的示例。@VictorDeryagin的答案中给出的DeepEqual()。

package main

import (
    "fmt"
    "reflect"
)

func main() {
    a := []int {4,5,6}
    b := []int {4,5,6}
    c := []int {4,5,6,7}

    fmt.Println(reflect.DeepEqual(a, b))
    fmt.Println(reflect.DeepEqual(a, c))

}

结果:

true
false

去游乐场试试

刘安志
2023-03-14

您需要遍历切片中的每个元素并进行测试。没有定义切片的相等性。但是,存在一个字节。如果比较类型[]byte的值,则使用相等的函数。

func testEq(a, b []Type) bool {
    if len(a) != len(b) {
        return false
    }
    for i := range a {
        if a[i] != b[i] {
            return false
        }
    }
    return true
}
郑理
2023-03-14

你应该使用反射。深度平等

DeepEqual是Go的==运算符的递归松弛。

DeepEqual报告x和y是否“深度相等”,定义如下。如果下列情况之一适用,则两个相同类型的值完全相等。不同类型的值永远不会完全相等。

当数组值的对应元素深度相等时,数组值深度相等。

如果相应的字段(导出和未导出)深度相等,则结构值深度相等。

如果两者都为零,则Func值完全相等;否则,它们并不完全平等。

如果接口值包含非常相等的具体值,则它们是非常相等的。

如果映射值是相同的映射对象,或者如果它们具有相同的长度并且其相应的键(使用Go相等性匹配)映射到深度相等的值,则映射值深度相等。

如果指针值使用Go的==运算符相等,或者指针值指向非常相等的值,则指针值非常相等。

当以下所有值为真时,切片值是完全相等的:它们都是nil或非nil,它们具有相同的长度,并且它们指向相同基础数组的相同初始条目(即,

如果使用Go的==运算符,其他值(数字、布尔值、字符串和通道)是相等的,则它们是完全相等的。

 类似资料:
  • 问题内容: 如何检查两个切片是否相等? 问题答案: 您需要遍历切片中的每个元素并进行测试。未定义切片的相等性。但是,如果要比较type的值,则有一个函数。

  • 问题内容: 我想检查两个数组是否相等。我的意思是:相同的大小,相同的索引,相同的值。我怎样才能做到这一点? 根据用户的建议,如果数组中的至少一个元素不同,我希望以下内容可以打印 enter ,但实际上没有。 问题答案: $arraysAreEqual = ($a == $b); // TRUE if $a and $b have the same key/value pairs. $arraysA

  • 问题内容: 我想知道如何检查两个功能是否相同。一个示例将评估为true。据我所知,Python将检查函数是否在内存中占据相同的位置,而不是它们是否具有相同的操作。我知道拥有该功能似乎不切实际。 另一个解决方案是我可以在函数上运行以查看其包含的内容或工作方式的某些方法。因此,其中一种将返回该方法的工作方式,可能是在字典中还是在某种形式中。 我希望得到一个答案,但我怀疑这是可能的。 问题答案: 如果您

  • 我有两个arraylist。employee类和user类的ArrayList。employee类将name、age、address作为字段。用户类将名称、年龄、地址作为字段。下面是两个列表 要检查用户是否和员工的地址相同。如果用户没有地址,则从员工处复制。

  • 我需要一个可以在junit 方法中调用的方法,该方法比较两个布尔值以检查它们是否相等,并返回一个布尔值。例如,类似这样的事情: 如果不相等,则返回false,如果相等,则返回true。我已经检查了布尔类,但是唯一接近的是< code>Boolean.compare(),它返回一个int值,我不能使用这个值。

  • 问题内容: 以下测试失败 有什么办法让它通过吗? 编辑 :我将尝试使其更加清晰。 可以说我有这些课程: 现在说我想为B编写单元测试: 问题是测试失败,因为方法引用不相等。 问题答案: Lambda不被缓存,这似乎是有意的。无法比较两个lambda以查看它们是否会做相同的事情。 你需要做类似的事情 Brian Goetz的回答;有没有办法比较lambda?