我正在编写不同的调度算法,并想比较订购作业的各种方式。我在结构上有一个函数,我想传递排序接口类型的类型以供函数内的排序使用。type Schedule struct { Jobs []Job}type ByDifference []Job// ByDifference implements sort.Interfacetype ByRatio []Job// ByRatio implements sort.Interfacefunc (s *Schedule) Schedule(OrderBy sort.Interface) { // Summation variables omitted // This fails as there is no function OrderBy() sort.(OrderBy(q.Jobs)) for _, v := range q.Jobs { // Compute weighted sum omitted } // Output code omitted}自然,我想调用 Schedule 函数并传递 ByDifference 或 ByRatio 的一些表示,并让排序使用该类型。我最初的阅读似乎导致了类型反射。是否可以使用这种设计来传递一种类型,该类型实现了要在函数内由 sort 使用的接口?
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
也许这样
type Schedule struct {
Jobs []Job
}
const(
Difference=iota
Ratio=iota
)
type ByDifference Schedule
// ByDifference implements sort.Interface
type ByRatio Schedule
// ByRatio implements sort.Interface
func (s *Schedule) Schedule(order int) { // s.Schedule(Difference) for example
// Summation variables omitted
switch order{
case Difference: ss:= ByDifference(*s); sort(ss); s=&Schedule(ss)
case Ratio: ss:= ByRatio(*s); sort(ss); s=&Schedule(ss)
}
for _, v := range s.Jobs {
// Compute weighted sum omitted
}
// Output code omitted
}
- 1 回答
- 0 关注
- 207 浏览
添加回答
举报
0/150
提交
取消