google/go-cmp

GitHub: google/go-cmp

Go 语言中比 reflect.DeepEqual 更强大且安全的值比较包,主要用于测试中判断两个值的语义相等性。

Stars: 4665 | Forks: 234

# 用于比较 Go 值相等性的包 [![GoDev](https://img.shields.io/static/v1?label=godev&message=reference&color=00add8)][godev] [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce733292a922c08274cf5a2096f8fa4cf01023bfa51a36ef6beecaaef371a9d9.svg)][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工具, 反射, 开发辅助, 数据比较, 日志审计, 测试工具