---
name: filter_slice
kind: function
lang: go
domain: core
version: "1.0.0"
purity: pure
signature: "func FilterSlice[T any](xs []T, pred func(T) bool) []T"
description: "Filtra un slice aplicando un predicado sin mutar el original. Retorna un nuevo slice con los elementos que cumplen la condicion."
tags: [slice, functional, generic, filter]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: xs
    desc: "slice de elementos a filtrar"
  - name: pred
    desc: "función predicado que retorna true para elementos a incluir"
output: "nuevo slice con solo los elementos que cumplen el predicado"
tested: true
tests: ["filtra pares", "slice vacio retorna vacio", "ningun match retorna vacio"]
test_file_path: "functions/core/filter_slice_test.go"
file_path: "functions/core/filter_slice.go"
---

## Ejemplo

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

## Notas

Funcion pura generica. Crea un nuevo slice con capacidad pre-alocada al tamaño del original para minimizar reallocs.
