This package is based on the original reflect.DeepEqual
, but adds useful error messages pointing out where and how the compared values differ.
import "github.com/romnn/deepequal"
// examples/example1/main.go
package main
import (
"log"
"github.com/romnn/deepequal"
)
type person struct {
Name string
Age int
Hobbies []string
}
func main() {
a := person{Name: "A", Age: 22, Hobbies: []string{"Surfing"}}
b := person{Name: "A", Age: 22, Hobbies: []string{}}
if equal, err := deepequal.DeepEqual(a, a); !equal {
log.Fatalf("not equal: %v", err)
}
if equal, err := deepequal.DeepEqual(a, b); equal {
log.Fatalf("unexpected equal: %v", err)
}
}
For more examples see the examples/
directory.
- Check out the vanilla
reflect
implementation at golang.org/src/reflect/deepequal.go