Sobes.tech
Junior — Middle

Meg tudná magyarázni, mi az a Comparable interfész, és hogyan használják?

sobes.tech MI

Válasz az MI-től

Go nyelvben a Comparable nevű különálló standard interfész nem létezik, de a nyelv beépített lehetőséget biztosít az értékek összehasonlítására az == és != operátorok segítségével, amelyek támogatott típusokra alkalmazhatók.

Azonban, ha olyan interfészről beszélünk, amely egy metódust határoz meg az objektumok összehasonlítására, akkor gyakran létrehoznak egy egyedi interfészt, például:

// Comparable interfész a Compare metódussal
// Negatív számot ad vissza, ha az aktuális objektum kisebb a másiknál,
// 0, ha egyenlő, és pozitív, ha nagyobb.
type Comparable interface {
    Compare(other interface{}) int
}

Ez az interfész lehetővé teszi, hogy különböző típusú objektumokat rendezzünk vagy összehasonlítsunk.

Példa a használatra:

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
}

Így az Comparable interfész egy szerződés, amely megköveteli az összehasonlító metódus megvalósítását, hogy az objektumokat rendezni vagy összehasonlítani lehessen.