Sobes.tech
Junior — Middle

Môžete vysvetliť, čo je rozhranie Comparable a ako sa používa?

sobes.tech AI

Odpoveď od AI

V jazyku Go neexistuje samostatné rozhranie Comparable ako štandardné rozhranie, ale jazyk má vstavanú možnosť porovnávať hodnoty pomocou operátorov == a != pre typy, ktoré podporujú porovnávanie.

Avšak, ak hovoríme o rozhraní, ktoré definuje metódu na porovnávanie objektov, často sa vytvára vlastné rozhranie, napríklad:

// Rozhranie Comparable s metódou Compare
// Vráti záporné číslo, ak je aktuálny objekt menší ako iný,
// 0 ak sú rovné, a kladné ak je väčší.
type Comparable interface {
    Compare(other interface{}) int
}

Takéto rozhranie umožňuje implementovať zoradenie alebo porovnávanie objektov rôznych typov.

Príklad použitia:

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 spôsobom je rozhranie Comparable zmluvou, ktorá vyžaduje implementáciu metódy porovnania, aby objekty mohli byť zoradené alebo porovnávané medzi sebou.