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())
 	}