---
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."
tags: [slice, functional, generic]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: xs
    desc: "slice de elementos a filtrar"
  - name: pred
    desc: "predicado que evalúa cada elemento, true = incluir"
output: "nuevo slice con los elementos que cumplen el predicado"
tested: false
tests: []
test_file_path: ""
file_path: "functions/core/filter_slice.go"
# Source attribution (solo para funciones extraidas de repos externos)
# source_repo: "https://github.com/user/project"
# source_license: "MIT"
# source_file: "pkg/utils.go"
---

## Ejemplo

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

## Notas

Funcion pura generica. No muta el slice original — crea uno nuevo.
