diff --git a/issue100_test.go b/issue100_test.go new file mode 100644 index 0000000..3584024 --- /dev/null +++ b/issue100_test.go @@ -0,0 +1,17 @@ +package mergo + +import "testing" + +type issue100s struct { + Member interface{} +} + +func TestIssue100(t *testing.T) { + m := make(map[string]interface{}) + m["Member"] = "anything" + + st := &issue100s{} + if err := Map(st, m); err != nil { + t.Error(err) + } +} diff --git a/merge.go b/merge.go index c35fd53..b7fcf5e 100644 --- a/merge.go +++ b/merge.go @@ -226,7 +226,7 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co case reflect.Ptr: fallthrough case reflect.Interface: - if src.IsNil() { + if isReflectNil(src) { if overwriteWithEmptySrc && dst.CanSet() && src.Type().AssignableTo(dst.Type()) { dst.Set(src) }