Sobes.tech
Junior — Middle

Оё структура дар Go бо интерфейси Comparable мувофиқ аст?

sobes.tech AI

Ҷавоб аз AI

Дар забонҳои Go, интерфейси Comparable қисми стандартӣ нест, аммо одатан онро ҳамчун интерфейс бо усули муқоиса фаҳмида мешавад, масалан:

type Comparable interface {
    Compare(other interface{}) int // баргардондани -1, 0, 1
}

Танзимоти дар Go мувофиқ аст, агар ҳама методҳои ин интерфейсро иҷро кунад. Яъне, агар структураи шумо метод Compare-ро бо имзои зарурӣ иҷро кунад, он мувофиқ бо Comparable аст.

Масалан:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // ё коркарди хато
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// MyStruct ҳоло Comparable-ро иҷро мекунад

Агар усули Compare иҷро нашуда бошад, структура бо интерфейси Comparable мувофиқ нест.