Documentation ¶
Overview ¶
Package reflect is a fork of go's standard library reflection package, which allows for deep equal with equality functions defined.
Index ¶
- type Equalities
- func (e Equalities) AddFunc(eqFunc interface{}) error
- func (e Equalities) AddFuncs(funcs ...interface{}) error
- func (e Equalities) DeepDerivative(a1, a2 interface{}) bool
- func (e Equalities) DeepEqual(a1, a2 interface{}) bool
- func (e Equalities) DeepEqualWithNilDifferentFromEmpty(a1, a2 interface{}) bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Equalities ¶
Equalities is a map from type to a function comparing two values of that type.
func EqualitiesOrDie ¶
func EqualitiesOrDie(funcs ...interface{}) Equalities
For convenience, panics on errors
func (Equalities) AddFunc ¶
func (e Equalities) AddFunc(eqFunc interface{}) error
AddFunc uses func as an equality function: it must take two parameters of the same type, and return a boolean.
func (Equalities) AddFuncs ¶
func (e Equalities) AddFuncs(funcs ...interface{}) error
AddFuncs is a shortcut for multiple calls to AddFunc.
func (Equalities) DeepDerivative ¶
func (e Equalities) DeepDerivative(a1, a2 interface{}) bool
DeepDerivative is similar to DeepEqual except that unset fields in a1 are ignored (not compared). This allows us to focus on the fields that matter to the semantic comparison.
The unset fields include a nil pointer and an empty string.
func (Equalities) DeepEqual ¶
func (e Equalities) DeepEqual(a1, a2 interface{}) bool
DeepEqual is like reflect.DeepEqual, but focused on semantic equality instead of memory equality.
It will use e's equality functions if it finds types that match.
An empty slice *is* equal to a nil slice for our purposes; same for maps.
Unexported field members cannot be compared and will cause an informative panic; you must add an Equality function for these types.
func (Equalities) DeepEqualWithNilDifferentFromEmpty ¶ added in v0.25.0
func (e Equalities) DeepEqualWithNilDifferentFromEmpty(a1, a2 interface{}) bool