Junior — Middle
Je štruktúra v Go kompatibilná s rozhraním Comparable?
sobes.tech AI
Odpoveď od AI
V jazyku Go nie je rozhranie Comparable súčasťou štandardu, ale často sa chápe ako rozhranie s metódou na porovnanie, napríklad:
type Comparable interface {
Compare(other interface{}) int // vracia -1, 0, 1
}
Štruktúra v Go je kompatibilná s rozhraním, ak implementuje všetky metódy tohto rozhrania. Inými slovami, ak vaša štruktúra implementuje metódu Compare s požadovanou signatúrou, je kompatibilná s Comparable.
Príklad:
type MyStruct struct {
Value int
}
func (m MyStruct) Compare(other interface{}) int {
o, ok := other.(MyStruct)
if !ok {
return -2 // alebo spracovanie chyby
}
if m.Value < o.Value {
return -1
} else if m.Value > o.Value {
return 1
}
return 0
}
// MyStruct teraz implementuje Comparable
Ak metóda Compare nie je implementovaná, štruktúra nie je kompatibilná s rozhraním Comparable.