Sobes.tech
Junior — Middle

A Go szerkezete kompatibilis a Comparable interfésszel?

sobes.tech MI

Válasz az MI-től

Go nyelvben a Comparable interfész nem része az alapértelmezett szabványnak, de gyakran értelmezik úgy, mint egy interfészt, amelynek van egy összehasonlító módszere, például:

type Comparable interface {
    Compare(other interface{}) int // -1, 0, 1 értéket ad vissza
}

Egy struktúra Go-ban akkor kompatibilis az interfésszel, ha megvalósítja az összes módszert. Vagyis, ha a struktúrád megvalósítja a megfelelő szignatúrájú Compare módszert, akkor kompatibilis a Comparable-lal.

Példa:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // vagy hiba kezelése
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// Most a MyStruct megvalósítja a Comparable-t

Ha a Compare módszer nincs megvalósítva, akkor a struktúra nem kompatibilis a Comparable interfésszel.