Sorting 一个分拣机功能,用于对一般集合进行分拣
在我的项目中,我有许多不同数据类型的集合片段。任何特定集合都应该定义它可以排序的字段。我想编写一个排序函数,并在需要排序集合时使用用户输入的排序字段和顺序调用它。我提出了以下样板代码,仅描述了一种类型的集合,但对于其他集合,它将是相同的: 我有一个集合的可排序接口。Sortable应通过sort字段的用户输入传递给sortStats。如果具体实现支持这种类型的排序,它应该返回sort.Interface和相应的接口 sort.Interface的许多重复实现存在问题,其中Len和Swap方法相同。不同的只是更少Sorting 一个分拣机功能,用于对一般集合进行分拣,sorting,go,Sorting,Go,在我的项目中,我有许多不同数据类型的集合片段。任何特定集合都应该定义它可以排序的字段。我想编写一个排序函数,并在需要排序集合时使用用户输入的排序字段和顺序调用它。我提出了以下样板代码,仅描述了一种类型的集合,但对于其他集合,它将是相同的: 我有一个集合的可排序接口。Sortable应通过sort字段的用户输入传递给sortStats。如果具体实现支持这种类型的排序,它应该返回sort.Interface和相应的接口 sort.Interface的许多重复实现存在问题,其中Len和Swap方法相同
在这种情况下,是否有任何方法可以摆脱Len和Swap方法,或者有其他方法可以使用动态排序字段编写泛型排序函数?您正在寻找泛型,而Go目前不支持泛型。看 围棋小组正在努力——这是一项正在进行的工作,每个人都可以自由参与讨论。一旦泛型存在,它们将提供您在这里寻求的解决方案
同时,您可以使用或考虑稍微不同的设计来解决您的问题。有些代码重复也可以,Go不像其他语言那样不喜欢它。如果sort.Slice不适合您,那么答案是否定的。如果需要,我需要更改排序方向。为此,我使用sort.Reverse,它使用sort.Interface。如何使用sort.Slice更改排序方向而不编写不同的less函数来排序不同的方向?只需实现sort.Interface并根据需要使用sort.sort/sort.Reverse。@Adrian这正是我当前代码所做的。我知道go中的泛型,不,我不寻找泛型。我正在寻找一种重复性较小的方法来对不同的集合进行排序。