typestar

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

  1. La forma de dos resultados nunca hace panic: revisa el bool.
  2. La forma de un solo resultado hace panic cuando el tipo no es.
  3. Asertar hacia una interfaz pregunta si existen métodos extra.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 2 en Tipos dinámicos; paso 9 de 19 en Interfaces y genéricos.

← Anterior Siguiente →