---
name: reduce
kind: function
lang: go
domain: core
version: "1.0.0"
purity: pure
signature: "func Reduce[T, U any](slice []T, initial U, f func(U, T) U) U"
description: "Reduce un slice a un unico valor aplicando una funcion acumuladora de izquierda a derecha."
tags: [slice, functional, generic, fold]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
  - name: slice
    desc: "slice de elementos a reducir"
  - name: initial
    desc: "valor inicial del acumulador"
  - name: f
    desc: "función acumuladora que toma (acumulador, elemento) y retorna nuevo acumulador"
output: "valor final del acumulador después de procesar todos los elementos"
tested: false
tests: []
test_file_path: ""
file_path: "functions/core/reduce.go"
---

## Ejemplo

```go
sum := Reduce([]int{1, 2, 3, 4}, 0, func(acc, x int) int { return acc + x })
// sum = 10
```

## Notas

Funcion pura generica. Implementacion en devfactory/core.
