Sobes.tech
Junior — Middle

Můžete vysvětlit, co je to rozhraní Comparable a jak se používá?

sobes.tech AI

Odpověď od AI

V jazyce Go neexistuje samostatné rozhraní Comparable jako standardní rozhraní, ale jazyk má vestavěnou možnost porovnávat hodnoty pomocí operátorů == a != pro typy, které podporují porovnání.

Nicméně, pokud mluvíme o rozhraní, které definuje metodu pro porovnání objektů, často se vytváří vlastní rozhraní, například:

// Rozhraní Comparable s metodou Compare
// Vrací záporné číslo, pokud je aktuální objekt menší než jiný,
// 0 pokud jsou rovny, a kladné pokud je větší.
type Comparable interface {
    Compare(other interface{}) int
}

Takové rozhraní umožňuje implementovat řazení nebo porovnání objektů libovolných typů.

Příklad použití:

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
}

Tímto způsobem je rozhraní Comparable smlouvou, která vyžaduje implementaci metody porovnání, aby bylo možné objekty řadit nebo porovnávat mezi sebou.