Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, czym jest interfejs Comparable i jak jest używany?

sobes.tech AI

Odpowiedź od AI

W Go interfejs Comparable jako oddzielny standardowy interfejs nie istnieje, ale język ma wbudowaną możliwość porównywania wartości za pomocą operatorów == i != dla typów, które obsługują porównanie.

Jednak, jeśli mówimy o interfejsie, który definiuje metodę do porównywania obiektów, często tworzy się własny interfejs, na przykład:

// Interfejs Comparable z metodą Compare
// Zwraca liczbę ujemną, jeśli bieżący obiekt jest mniejszy od innego,
// 0 jeśli są równe, i dodatnią jeśli jest większy.
type Comparable interface {
    Compare(other interface{}) int
}

Taki interfejs pozwala na implementację sortowania lub porównywania obiektów dowolnych typów.

Przykład użycia:

type IntWrapper int

func (a IntWrapper) Compare(b interface{}) int {
    other := b.(IntWrapper)
    if a < other {
        return -1
    } else if a > other {
        return 1
    }
    return 0
}

W ten sposób, interfejs Comparable jest kontraktem, który wymaga implementacji metody porównania, aby obiekty można było sortować lub porównywać między sobą.