Sobes.tech
Junior — Middle

Structura în Go este compatibilă cu interfața Comparable?

sobes.tech AI

Răspuns de la AI

În Go, interfața Comparable nu face parte din standardul încorporat, dar este adesea înțeleasă ca o interfață cu o metodă de comparare, de exemplu:

type Comparable interface {
    Compare(other interface{}) int // returnează -1, 0, 1
}

O structură în Go este compatibilă cu interfața dacă implementează toate metodele acesteia. Adică, dacă structura ta implementează metoda Compare cu semnătura necesară, ea este compatibilă cu Comparable.

Exemplu:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // sau tratare a erorii
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// MyStruct acum implementează Comparable

Dacă metoda Compare nu este implementată, structura nu este compatibilă cu interfața Comparable.