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.