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.