in commit 929fce9 the check of Equal() function was moved under the reflect.Struct case.
and here is an example why this is wrong:
https://play.golang.org/p/AlgXufFrO1g
package main
import (
"fmt"
"net"
"github.com/go-test/deep"
)
func main() {
ipA := net.ParseIP("1.2.3.4")
ipB := net.ParseIP("1.2.3.4").To4()
fmt.Println(deep.Equal(ipA, ipB))
fmt.Println(ipA.Equal(ipB))
}
ipA and ipB has different len of their slice inside, but they still represents the same ip. however deep.Equal() say there is a diff between ipA and ipB.
not only structs may have an Equal() method.
in commit 929fce9 the check of
Equal()function was moved under thereflect.Structcase.and here is an example why this is wrong:
https://play.golang.org/p/AlgXufFrO1g
ipAandipBhas different len of their slice inside, but they still represents the same ip. howeverdeep.Equal()say there is a diff betweenipAandipB.not only structs may have an
Equal()method.