13.3 Example: Deep Equivalence
The DeepEqual
function from the reflect
package reports
whether two values are “deeply” equal.
DeepEqual
compares basic values as if by the built-in ==
operator; for composite values, it traverses them recursively,
comparing corresponding elements.
Because it works for any pair of values, even ones that are not
comparable with ==
, it finds widespread use in tests.
The following test uses DeepEqual
to compare two []string
values:
func TestSplit(t *testing.T) { got := strings.Split("a:b:c", ":") want := []string{"a", "b", "c"}; if !reflect.DeepEqual(got, want) { /* ... */ } }
Although DeepEqual
is convenient, its distinctions can seem arbitrary. For example, it doesn’t consider a ...
Get The Go Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.