Sobes.tech
Junior — Middle

Je struktura v Go kompatibilní s rozhraním Comparable?

sobes.tech AI

Odpověď od AI

V jazyce Go není rozhraní Comparable součástí vestavěného standardu, ale často se chápe jako rozhraní s metodou pro porovnání, například:

type Comparable interface {
    Compare(other interface{}) int // vrací -1, 0, 1
}

Struktura v Go je kompatibilní s rozhraním, pokud implementuje všechny metody tohoto rozhraní. Jinými slovy, pokud vaše struktura implementuje metodu Compare s požadovanou signaturou, je kompatibilní s Comparable.

Příklad:

type MyStruct struct {
    Value int
}

func (m MyStruct) Compare(other interface{}) int {
    o, ok := other.(MyStruct)
    if !ok {
        return -2 // nebo zpracování chyby
    }
    if m.Value < o.Value {
        return -1
    } else if m.Value > o.Value {
        return 1
    }
    return 0
}

// MyStruct nyní implementuje Comparable

Pokud metoda Compare není implementována, struktura není kompatibilní s rozhraním Comparable.