Как узнать результат сравнения интерфейсов

«Как узнать результат сравнения интерфейсов» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go сравнение интерфейсов выполняется следующим образом:

  1. Если оба интерфейса nil - они равны
  2. Если один nil, а другой нет - не равны
  3. Если типы динамических значений разные - не равны
  4. Если типы одинаковые - сравниваются сами динамические значения

Пример:

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 - слайсы нельзя сравнивать

Важно: сравнение интерфейсов с несравниваемыми типами (например, слайсами, мапами) вызывает панику.