diff --git a/set.go b/set.go index 124f9fad40f052afc877d19f87ae3205a3da1f9f..f1ab15f675802831017357354d552dd19d72cefd 100644 --- a/set.go +++ b/set.go @@ -134,6 +134,17 @@ func SetValue[D any](obj D, keyWithDots string, newValue any) error { v.SetFloat(s) } + case reflect.Slice, reflect.Array: + + if newValueKind == reflect.Ptr { + newValue = reflect.ValueOf(newValue).Elem().Interface() + v.Set(reflect.ValueOf(newValue)) + } else if newValueKind == reflect.Slice { + v.Set(reflect.ValueOf(newValue)) + } else { + return newUnsupportedTypePathError(keyWithDots, v.Type()) + } + default: return newInvalidTypeForPathError(keyWithDots, v.Type().String(), newValueKind.String()) }