一种用于分类通用集合的分类器功能

时间:2019-01-23 13:16:38

标签: sorting go

在我的项目中,我有许多不同数据类型的集合(切片)。任何特定的集合都应定义可以排序的字段。我想编写一个排序函数,并在每次对集合进行排序时使用用户输入(排序字段和顺序)进行调用。我想出了以下样板代码(仅描述了一种类型的集合,但对于其他类型,它是相同的):https://gist.github.com/abonec/f1ee23a38e78ea48d470c39885de47ba

我有一个用于集合的接口Sortable。用户应该在sort字段中输入Sortable并将其传递给sortStats。如果具体实现支持这种类型的排序,则应返回带有相应接口的sort.Interface

许多重复执行sort.Interface的问题,其中Len()Swap()方法是相同的。仅Less()有所不同。

在这种情况下,是否有任何方法可以摆脱Len()Swap()方法,或者可能是另一种使用动态排序字段编写通用排序函数的方法?

1 个答案:

答案 0 :(得分:2)

您正在寻找Go目前不支持的泛型。参见this FAQ entry

Go小组正在努力add generics to the language-这项工作仍在进行中,每个人都可以自由参加讨论。泛型一旦存在,它们将提供您在此处寻求的解决方案。


同时,您可以使用code generation或为您的问题考虑一个略有不同的设计。某些代码复制也是可以的,Go并不像其他语言那么糟糕。