Genéricos en Go
Parámetros de tipo e interfaces de restricción.
type Number interface {
~int | ~int64 | ~float64
}
func Sum[T Number](items []T) T {
var total T
for _, item := range items {
total += item
}
return total
}
func Map[T, U any](items []T, f func(T) U) []U {
out := make([]U, 0, len(items))
for _, item := range items {
out = append(out, f(item))
}
return out
}
Cómo funciona
- Una interfaz de restricción hace la unión de los tipos permitidos.
~intincluye los tipos cuyo tipo subyacente es int.Map[T, U any]transforma entre tipos de elemento.
Palabras clave y builtins usados aquí
anyappendfloat64forfuncintint64interfacelenmakerangereturntypevar
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 310
- Tokens
- 108
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 59 segundos.
Paso 1 de 4 en Genéricos; paso 13 de 19 en Interfaces y genéricos.