【发布时间】:2022-10-12 21:20:29
【问题描述】:
我有一个充满String 类型版本的数组,需要排序,但是当前的排序方法对它的排序不正确
apiVersions := []string{"1.4", "1.12", "1.21", "1.8"}
在对apiVersions 进行排序时,数组看起来像["1.12", "1.21", "1.4", "1.8"] 而不是["1.4", "1.8", "1.12", "1.21"]
【问题讨论】:
-
你为什么不在
.字符处拆分字符串,将每个部分转换为整数并按数字排序,而不是按字母排序? -
排序算法不知道你的字符串的语义含义:排序算法不知道你的字符串保存版本以及如何对它们进行排序。排序算法只是按字节对字符串进行排序。您必须定义您的
less()函数,该函数告诉如何对存储为字符串的版本进行排序,并将其与sort.Slice()一起使用。 -
如果这些是语义版本,我建议只使用现有的库来解析和比较它们,这样你就不会错过任何其他版本组件,因为它们是稍后添加的。