Я недавно начал изучать Go и столкнулся с следующей проблемой. Я хочу реализовать интерфейс Comparable. У меня есть следующий код:Как реализовать сопоставимый интерфейс в go?
type Comparable interface {
compare(Comparable) int
}
type T struct {
value int
}
func (item T) compare(other T) int {
if item.value < other.value {
return -1
} else if item.value == other.value {
return 0
}
return 1
}
func doComparison(c1, c2 Comparable) {
fmt.Println(c1.compare(c2))
}
func main() {
doComparison(T{1}, T{2})
}
Так я получаю ошибку
cannot use T literal (type T) as type Comparable in argument to doComparison:
T does not implement Comparable (wrong type for compare method)
have compare(T) int
want compare(Comparable) int
И я думаю, я понимаю проблему, которая T
не реализует Comparable
, потому что сравнивать метод принимать в качестве параметра T
но не Comparable
,
Возможно, я что-то пропустил или не понял, но можно ли это сделать?
Отлично! Спасибо! –
Возможно, вы сделали двойную диапатчику вместо утверждения типа –
@Ezequiel Moreno Можете ли вы отправить пример, пожалуйста? –