5
我最近開始學習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
。
也許我錯過了一些東西或者不明白但是有可能做這樣的事情嗎?
太棒了!謝謝! –
你可能已經做了雙重的diapatch,而不是類型斷言 –
@Ezequiel Moreno你可以張貼示例嗎? –