Aserciones de tipo en Go
Extraer de vuelta un tipo concreto, con seguridad o con panic.
type Closer interface{ Close() error }
type File struct{ name string }
func (f File) Close() error { return nil }
func assertions(value any) (int, bool, bool) {
number, ok := value.(int)
_, isCloser := value.(Closer)
defer func() { _ = recover() }()
forced := value.(string) // hace panic salvo que sea una cadena
return number + len(forced), ok, isCloser
}
Cómo funciona
- La forma de dos resultados nunca hace panic: revisa el bool.
- La forma de un solo resultado hace panic cuando el tipo no es.
- Asertar hacia una interfaz pregunta si existen métodos extra.
Palabras clave y builtins usados aquí
anybooldefererrorfuncintinterfacelenrecoverreturnstringstructtype
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 362
- Tokens
- 94
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 54 segundos.
Paso 2 de 2 en Tipos dinámicos; paso 9 de 19 en Interfaces y genéricos.