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 интерфейси менен шайкеш келбейт.