Sobes.tech
Junior — Middle

Структурата в Go съвместима ли е с интерфейса Comparable?

sobes.tech AI

Отговор от 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.