Sobes.tech
Junior

¿Cuál es el papel de la interfaz vacía en el lenguaje Go?

sobes.tech AI

Respuesta de la IA

La interfaz vacía interface{} en Go puede almacenar valores de cualquier tipo. Esto la hace útil para los siguientes escenarios:

  • Funciones que trabajan con tipos de datos desconocidos en tiempo de compilación. Por ejemplo, la biblioteca estándar fmt.Println acepta argumentos de tipo interface{}.
  • Almacenamiento de tipos de datos mixtos en colecciones. La rebanada []interface{} puede contener elementos de diferentes tipos.
  • Implementación de polimorfismo cuando los tipos específicos no son conocidos de antemano.

Sin embargo, el uso de la interfaz vacía requiere realizar una afirmación de tipo (type assertion) o un switch de tipos (type switch) en tiempo de ejecución para acceder al valor real y sus métodos, lo cual puede ser menos seguro en cuanto a tipos y menos eficiente en comparación con el uso de tipos específicos o interfaces más especializadas.

// Ejemplo de uso de la interfaz vacía
var data interface{}
data = 10         // data ahora almacena un int
data = "hello"    // data ahora almacena un string
data = true       // data ahora almacena un bool

// Afirmación de tipo para acceder al valor
if value, ok := data.(string); ok {
	// value es un string
	_ = value
}

// Switch de tipos
switch v := data.(type) {
case int:
	// v es un int
	_ = v
case string:
	// v es un string
	_ = v
default:
	// Tipo desconocido
}