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
interesante sr
gracias josé!