我想为任何实现Distance()方法的坐标类型事物定义接口,该方法可用于计算距离(可能是笛卡尔,也许是按时间顺序等)坐标型相同类型的东西。请参阅Golang接口方法中的实现类型
这是总体思路:
type Distancer interface {
Distance(other interface{}) int
}
这并不提供类型安全的参数距离(),但是,这必须是同一类型的。例如,我可能有一个实现Distance()的SpecificTime结构;传递另一个ParticularTime对象作为参数是有道理的,但传递一个ParticularLocation根本没有意义。
我怀疑这可能会在编译时至少在某些情况下被捕获,例如,这显然是错误的:
x := ParticularLocation{}
y := ParticularTime{}
distance := x.Distance(y)
有没有什么办法来表达这种限制?或者我必须在Distance()的每个实现中执行运行时类型检查?
我是以错误的方式思考这个问题吗?
如果实现之间没有交叉,为什么不让它们分离接口,比如'TimeDistance','LocationDistance'? – JimB
这是一个给我学习的作品。要求是代码的另一部分接受任何抽象的“协调”类型的东西。看看我们将如何使用它,实现将在这个Distance()方法上重叠。 – SAyotte
我想你想距离(其他Distancer)int不是说这有助于原始问题 –