package util import ( "reflect" ) func Equal(expected, actual interface{}) bool { if expected == nil && actual == nil { return true } if expected == nil || actual == nil { return false } actualType := reflect.TypeOf(actual) expectedValue := reflect.ValueOf(expected) if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) { return reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), actual) } return reflect.DeepEqual(expected, actual) }