errors.Join en Go
Varias fallas a la vez, en un solo valor de error.
var (
ErrEmptyTitle = errors.New("title is empty")
ErrBadStars = errors.New("stars out of range")
)
func check(title string, stars int) error {
var problems error
if title == "" {
problems = errors.Join(problems, ErrEmptyTitle)
}
if stars < 0 || stars > 3 {
problems = errors.Join(problems, ErrBadStars)
}
return problems
}
func summary() (int, bool) {
err := check("", 9)
return len(strings.Split(err.Error(), "\n")), errors.Is(err, ErrBadStars)
}
Cómo funciona
Joinignora los nil, así que se compone con chequeos opcionales.errors.Iscoincide con cualquiera de los errores unidos.- El mensaje es una falla por línea.
Palabras clave y builtins usados aquí
boolerrorfuncifintlenreturnstringvar
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 452
- Tokens
- 116
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 70 segundos.
Paso 4 de 4 en Envolver errores; paso 7 de 15 en Errores.