---
name: map_slice
kind: function
lang: go
domain: core
version: "1.0.0"
purity: pure
signature: "func MapSlice[T any, U any](xs []T, fn func(T) U) []U"
description: "Transforma cada elemento de un slice aplicando una funcion. Retorna un nuevo slice del mismo tamaño con los resultados."
tags: [slice, functional, generic, map, transform]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: xs
    desc: "slice de elementos a transformar"
  - name: fn
    desc: "función que transforma cada elemento de tipo T a tipo U"
output: "nuevo slice de resultados transformados, mismo tamaño que entrada"
tested: true
tests: ["transforma enteros a strings", "slice vacio retorna vacio", "preserva orden"]
test_file_path: "functions/core/map_slice_test.go"
file_path: "functions/core/map_slice.go"
---

## Ejemplo

```go
strs := MapSlice([]int{1, 2, 3}, func(n int) string { return fmt.Sprintf("%d", n) })
// strs = ["1", "2", "3"]
```

## Notas

Funcion pura generica con dos type parameters: T (input) y U (output). Pre-aloca el slice resultado al tamaño exacto.
