typestar

map, filter y reduce genéricos en Go

Lo que la biblioteca estándar te deja a ti, en diez líneas.

func Map[T, U any](values []T, fn func(T) U) []U {
    out := make([]U, len(values))
    for i, value := range values {
        out[i] = fn(value)
    }
    return out
}

func Filter[T any](values []T, keep func(T) bool) []T {
    var out []T
    for _, value := range values {
        if keep(value) {
            out = append(out, value)
        }
    }
    return out
}

func Reduce[T, U any](values []T, start U, fn func(U, T) U) U {
    total := start
    for _, value := range values {
        total = fn(total, value)
    }
    return total
}

Cómo funciona

  1. Dos parámetros de tipo dejan que Map cambie el tipo de elemento.
  2. El argumento función hace el trabajo; el helper hace el bucle.
  3. Go no encadena métodos, así que estos se componen anidando.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
25
Caracteres a escribir
457
Tokens
165
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 90 segundos.

Escribe este fragmento

Paso 4 de 4 en Genéricos; paso 16 de 19 en Interfaces y genéricos.

← Anterior Siguiente →