Ответ
В Go сравнение интерфейсов выполняется следующим образом:
- Если оба интерфейса
nil- они равны - Если один
nil, а другой нет - не равны - Если типы динамических значений разные - не равны
- Если типы одинаковые - сравниваются сами динамические значения
Пример:
var a, b interface{}
a = 10
b = 10
fmt.Println(a == b) // true
var c interface{} = []int{1,2}
var d interface{} = []int{1,2}
fmt.Println(c == d) // false - слайсы нельзя сравнивать
Важно: сравнение интерфейсов с несравниваемыми типами (например, слайсами, мапами) вызывает панику.