Sobes.tech
Junior — Middle

Ar Go struktūra yra suderinama su Comparable sąsaja?

sobes.tech AI

Atsakymas iš AI

Go kalboje, Comparable sąsaja nėra įtraukta į standartinį paketą, tačiau dažnai ją supranta kaip sąsają su palyginimo metodu, pavyzdžiui:

type Comparable interface {
    Compare(other interface{}) int // grąžina -1, 0, 1
}

Go struktūra yra suderinama su sąsaja, jei ji įgyvendina visas šios sąsajos metodus. Kitaip tariant, jei jūsų struktūra įgyvendina Compare metodą su reikiama signatūra, ji yra suderinama su Comparable.

Pavyzdys:

type MyStruct struct {
    Value int
}

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

// Dabar MyStruct įgyvendina Comparable

Jei Compare metodas nėra įgyvendintas, struktūra nėra suderinama su Comparable sąsaja.