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ą.