google/go-cmp
GitHub: google/go-cmp
Go 语言中比 reflect.DeepEqual 更强大且安全的值比较包,主要用于测试中判断两个值的语义相等性。
Stars: 4665 | Forks: 234
# 用于比较 Go 值相等性的包
[][godev]
[][actions]
本包旨在提供一个比 `reflect.DeepEqual` 更强大且更安全的替代方案,
用于比较两个值在语义上是否相等。
`cmp` 的主要特性包括:
* 当默认的相等性比较行为无法满足测试需求时,
可以使用自定义的相等性函数来覆盖默认的相等性比较操作。
例如,一个相等性函数可以将彼此误差在一定范围内的
浮点数判定为相等。
* 拥有 `Equal` 方法的类型可以使用该方法来判断相等性。
这使得包作者可以为他们定义的类型自定义相等性比较操作。
* 如果没有使用自定义的相等性函数,且未定义 `Equal` 方法,
则相等性的判断将通过递归比较两个值的基础类型来完成,
这与 `reflect.DeepEqual` 非常相似。与 `reflect.DeepEqual` 不同的是,
默认情况下不会比较未导出的字段;除非使用 `Ignore` 选项
(参见 `cmpopts.IgnoreUnexported`)进行忽略,或者使用
`AllowUnexported` 选项进行显式比较,否则这些未导出字段会导致 panic。
有关更多信息,请参阅[文档][godev]。
这不是一个官方的 Google 产品。
## 安装
```
go get -u github.com/google/go-cmp/cmp
```
## 许可证
BSD - 请参阅 [LICENSE][license] 文件
标签:EVTX分析, Go, Ruby工具, 反射, 开发辅助, 数据比较, 日志审计, 测试工具