Back to questions
Junior — Middle
87
Является ли структура в Go совместимой с интерфейсом Comparable?
Answer from AI
sobes.tech 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.