Es posible comparar dos interfaces con el operador == siempre y cuando los tipos sean simples e idénticos, de lo contrario el código retornará un panic en tiempo de ejecución,

var avenger interface{}
var xman interface{}

avenger = 10
xman = 10
println(avenger == xman)
// resultado: true

avenger = []int{1}
xman= []int{2}
println(avenger == xman)
// resultado: panic: runtime error: comparing uncomparable type []int

Las estructuras e interfaces que contienen maps y eslices (pero no funciones) pueden ser comparadas usando la función reflect.DeepEqual():

var avenger interface{}
var justice interface{}

avenger = []int{1}
justice = []int{1}
println(reflect.DeepEqual(avenger, justice))
// Salida: true

avenger = map[string]string{“A”: “B”}
justice = map[string]string{“A”: “B”}
println(reflect.DeepEqual(avenger, justice))
// Salida: true

hFunction := func() {}
avenger = hFunction
justice = hFunction
println(reflect.DeepEqual(avenger, justice))
// Salida: false


                                
                                

Jesus Flores

Ingeniero de Software y Agile Coach

2 comentarios en "Comparar Interfaces"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *