Ответ
В Go сравнимыми являются типы, которые можно использовать с операторами == и !=:
- Базовые типы:
bool, числа (int,float64и др.),string - Указатели: сравниваются по адресу в памяти
- Каналы: сравниваются по ссылке
- Интерфейсы: сравниваются по динамическому типу и значению
- Структуры: если все их поля сравнимы
- Массивы: если элементы массива сравнимы
Несравнимые типы:
- Срезы (
[]T) - Мапы (
map[K]V) - Функции
Пример:
a := [2]int{1, 2} // сравниваемый (массив)
b := []int{1, 2} // несравнимый (срез)
fmt.Println(a == [2]int{1, 2}) // OK
// fmt.Println(b == []int{1, 2}) // Ошибка компиляции