在 Golang 中测试映射的等效性
在编写涉及映射的表驱动测试时,确定它们的等效性可能具有挑战性。一种方法是手动检查长度和各个键值对是否相等,但这对于不同的地图类型来说会变得重复。
惯用方法
Go 库提供内置解决方案:reflect.DeepEqual。该函数接受两个 interface{} 参数并递归地比较它们的值。对于映射,它使用以下步骤比较长度、键和值:
用法示例
要比较两个映射 m1 和 m2,请使用以下代码:
import "reflect" eq := reflect.DeepEqual(m1, m2) if eq { fmt.Println("They're equal.") } else { fmt.Println("They're unequal.") }
此解决方案无需自定义比较逻辑,并且适用于各种地图类型。但请注意,如果传递错误,它也会比较非映射值。
以上是如何在 Golang 中测试地图的等价性?的详细内容。更多信息请关注PHP中文网其他相关文章!