Switch de tipos en Go
Un switch sobre el tipo dinámico dentro de un valor de interfaz.
func describe(value any) string {
switch typed := value.(type) {
case nil:
return "nothing"
case int:
return fmt.Sprintf("int %d", typed*2)
case string:
return "string " + strings.ToUpper(typed)
case []int:
return fmt.Sprintf("%d ints", len(typed))
case error:
return "error " + typed.Error()
default:
return fmt.Sprintf("something else: %T", typed)
}
}
Cómo funciona
switch v := x.(type)liga v con el tipo de cada caso.- Un caso nil atrapa una interfaz que no contiene nada.
- La rama default es lo que lo mantiene honesto.
Palabras clave y builtins usados aquí
anycasedefaulterrorfuncintlenreturnstringswitchtype
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 353
- Tokens
- 89
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 51 segundos.
Paso 1 de 2 en Tipos dinámicos; paso 8 de 19 en Interfaces y genéricos.