1*88d15eacSSasha Smundak# Package for equality of Go values 2*88d15eacSSasha Smundak 3*88d15eacSSasha Smundak[][godev] 4*88d15eacSSasha Smundak[][actions] 5*88d15eacSSasha Smundak 6*88d15eacSSasha SmundakThis package is intended to be a more powerful and safer alternative to 7*88d15eacSSasha Smundak`reflect.DeepEqual` for comparing whether two values are semantically equal. 8*88d15eacSSasha Smundak 9*88d15eacSSasha SmundakThe primary features of `cmp` are: 10*88d15eacSSasha Smundak 11*88d15eacSSasha Smundak* When the default behavior of equality does not suit the needs of the test, 12*88d15eacSSasha Smundak custom equality functions can override the equality operation. 13*88d15eacSSasha Smundak For example, an equality function may report floats as equal so long as they 14*88d15eacSSasha Smundak are within some tolerance of each other. 15*88d15eacSSasha Smundak 16*88d15eacSSasha Smundak* Types that have an `Equal` method may use that method to determine equality. 17*88d15eacSSasha Smundak This allows package authors to determine the equality operation for the types 18*88d15eacSSasha Smundak that they define. 19*88d15eacSSasha Smundak 20*88d15eacSSasha Smundak* If no custom equality functions are used and no `Equal` method is defined, 21*88d15eacSSasha Smundak equality is determined by recursively comparing the primitive kinds on both 22*88d15eacSSasha Smundak values, much like `reflect.DeepEqual`. Unlike `reflect.DeepEqual`, unexported 23*88d15eacSSasha Smundak fields are not compared by default; they result in panics unless suppressed 24*88d15eacSSasha Smundak by using an `Ignore` option (see `cmpopts.IgnoreUnexported`) or explicitly 25*88d15eacSSasha Smundak compared using the `AllowUnexported` option. 26*88d15eacSSasha Smundak 27*88d15eacSSasha SmundakSee the [documentation][godev] for more information. 28*88d15eacSSasha Smundak 29*88d15eacSSasha SmundakThis is not an official Google product. 30*88d15eacSSasha Smundak 31*88d15eacSSasha Smundak[godev]: https://pkg.go.dev/github.com/google/go-cmp/cmp 32*88d15eacSSasha Smundak[actions]: https://github.com/google/go-cmp/actions 33*88d15eacSSasha Smundak 34*88d15eacSSasha Smundak## Install 35*88d15eacSSasha Smundak 36*88d15eacSSasha Smundak``` 37*88d15eacSSasha Smundakgo get -u github.com/google/go-cmp/cmp 38*88d15eacSSasha Smundak``` 39*88d15eacSSasha Smundak 40*88d15eacSSasha Smundak## License 41*88d15eacSSasha Smundak 42*88d15eacSSasha SmundakBSD - See [LICENSE][license] file 43*88d15eacSSasha Smundak 44*88d15eacSSasha Smundak[license]: https://github.com/google/go-cmp/blob/master/LICENSE 45