【发布时间】:2021-06-11 21:12:21
【问题描述】:
我想实现一个稍微定制的接口版本。我们以sort.Interface 为例。我们已经有了实现整个接口的sort.IntSlice。但我想实现一个 AbsoluteSort 算法。为此,我只想更改Less 方法。像这样的:
type AbsSortedArray struct {
sort.IntSlice
}
func (a AbsSortArray) Less(i, j int) bool {
return abs(a[i]) < abs(a[j]) // this causes an error as I don't have access to underlying array here
}
func abs(i int) int {
if i < 0 {
return i * -1
}
return i
}
所以基本上我想要实现的是:
- 从父级继承其他方法,例如
Len和Swap - 重写
Less方法,但不是出于存根/模拟的意图,而是我想要访问底层对象,以便我仍然可以实现我的自定义逻辑.
【问题讨论】:
-
等一下,请阅读
Lessfunc 我在返回比较之前调用abs函数 -
请注意,这些不是数组,也不是方法覆盖。
标签: go interface overriding