errors.Is en Go
Comparar contra un centinela a través de cualquier cantidad de envolturas.
var (
ErrLocked = errors.New("step locked")
ErrMissing = errors.New("step missing")
)
func play(idx int) error {
if idx > 10 {
return fmt.Errorf("play %d: %w", idx, ErrMissing)
}
if idx > 3 {
return fmt.Errorf("play %d: %w", idx, ErrLocked)
}
return nil
}
func describe(idx int) string {
err := play(idx)
switch {
case err == nil:
return "playing"
case errors.Is(err, ErrLocked):
return "earn a star first"
case errors.Is(err, ErrMissing):
return "no such step"
}
return "unknown failure"
}
Cómo funciona
==falla en cuanto el error queda envuelto;errors.Isno.- Los centinelas son vars exportadas, para que quien llama pueda nombrarlos.
errors.Istambién respeta un método Is que definas.
Palabras clave y builtins usados aquí
caseerrorfuncifintreturnstringswitchvar
El intento, en números
- Líneas
- 27
- Caracteres a escribir
- 493
- Tokens
- 115
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 69 segundos.
Paso 2 de 4 en Envolver errores; paso 5 de 15 en Errores.