首页 >后端开发 >Golang >如何在 Golang 中测试地图的等价性?

如何在 Golang 中测试地图的等价性?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-16 22:26:03586浏览

How to Test Equivalence of Maps in Golang?

在 Golang 中测试映射的等效性

在编写涉及映射的表驱动测试时,确定它们的等效性可能具有挑战性。一种方法是手动检查长度和各个键值对是否相等,但这对于不同的地图类型来说会变得重复。

惯用方法

Go 库提供内置解决方案:reflect.DeepEqual。该函数接受两个 interface{} 参数并递归地比较它们的值。对于映射,它使用以下步骤比较长度、键和值:

  1. 检查两个映射是否为零。
  2. 确保它们具有相同的长度。
  3. 验证它们是否具有相同的一组(键,值)对。

用法示例

要比较两个映射 m1 和 m2,请使用以下代码:

import "reflect"

eq := reflect.DeepEqual(m1, m2)
if eq {
    fmt.Println("They're equal.")
} else {
    fmt.Println("They're unequal.")
}

此解决方案无需自定义比较逻辑,并且适用于各种地图类型。但请注意,如果传递错误,它也会比较非映射值。

以上是如何在 Golang 中测试地图的等价性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn