Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 一个分拣机功能,用于对一般集合进行分拣_Sorting_Go - Fatal编程技术网

Sorting 一个分拣机功能,用于对一般集合进行分拣

Sorting 一个分拣机功能,用于对一般集合进行分拣,sorting,go,Sorting,Go,在我的项目中,我有许多不同数据类型的集合片段。任何特定集合都应该定义它可以排序的字段。我想编写一个排序函数,并在需要排序集合时使用用户输入的排序字段和顺序调用它。我提出了以下样板代码,仅描述了一种类型的集合,但对于其他集合,它将是相同的: 我有一个集合的可排序接口。Sortable应通过sort字段的用户输入传递给sortStats。如果具体实现支持这种类型的排序,它应该返回sort.Interface和相应的接口 sort.Interface的许多重复实现存在问题,其中Len和Swap方法相同

在我的项目中,我有许多不同数据类型的集合片段。任何特定集合都应该定义它可以排序的字段。我想编写一个排序函数,并在需要排序集合时使用用户输入的排序字段和顺序调用它。我提出了以下样板代码,仅描述了一种类型的集合,但对于其他集合,它将是相同的:

我有一个集合的可排序接口。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中的泛型,不,我不寻找泛型。我正在寻找一种重复性较小的方法来对不同的集合进行排序。