Sobes.tech
Назад к вопросам
Junior — Middle
86

Является ли структура в Go совместимой с интерфейсом Comparable?

Ответ от нейросети

sobes.tech AI

В Go интерфейс Comparable не является встроенным стандартом, но часто под ним понимают интерфейс с методом для сравнения, например:

type Comparable interface {
    Compare(other interface{}) int // возвращает -1, 0, 1
}

Структура в Go совместима с интерфейсом, если она реализует все методы этого интерфейса. То есть, если ваша структура реализует метод Compare с нужной сигнатурой, то она совместима с Comparable.

Пример:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // или обработка ошибки
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// MyStruct теперь реализует Comparable

Если метод Compare не реализован, то структура не совместима с интерфейсом Comparable.