Что значит Comparable

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

Ответ

В Go, comparable означает, что тип можно сравнивать с помощью операторов == и !=. Это свойство определено для типов, которые поддерживают сравнение на равенство.

Примеры comparable типов:

  • Числовые типы (int, float64 и др.)
  • Строки (string)
  • Булевы значения (bool)
  • Указатели (*T, если T comparable)
  • Структуры, если все их поля comparable
  • Массивы, если их элементы comparable

Не comparable:

  • Срезы ([]T)
  • Мапы (map[K]V)
  • Функции
a, b := 10, 20
fmt.Println(a == b) // OK: int comparable

s1, s2 := []int{1}, []int{1}
// fmt.Println(s1 == s2) // Ошибка: slices are not comparable

Используется в дженериках (comparable constraint):

func Equal[T comparable](a, b T) bool {
    return a == b
}