---
name: partition
kind: function
lang: go
domain: core
version: "1.0.0"
purity: pure
signature: "func Partition[T any](xs []T, pred func(T) bool) ([]T, []T)"
description: "Divide un slice en dos segun un predicado. El primer slice contiene los elementos que cumplen el predicado, el segundo los que no. Se preserva el orden original."
tags: [slice, partition, functional, generic, pendiente-usar]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: xs
    desc: "slice a particionar"
  - name: pred
    desc: "función predicado que retorna true para la primera partición"
output: "par de slices: (que cumplen predicado, que no cumplen); ambos preservan orden original"
tested: false
tests: []
test_file_path: ""
file_path: "functions/core/partition.go"
---

## Ejemplo

```go
evens, odds := Partition([]int{1, 2, 3, 4, 5}, func(n int) bool { return n%2 == 0 })
// evens = [2, 4]
// odds  = [1, 3, 5]
```

## Notas

Funcion pura generica. Ambos slices retornados son nuevos (no muta el slice original). Si el slice de entrada esta vacio, retorna dos slices vacios. Los elementos mantienen su orden relativo original en cada particion.
