给定:alphanumeric := ["aaa","bbb","ccc","111","222","333"]排序后:["333","222","111","aaa","bbb","ccc"]尝试内置排序包:sort.Strings(alphanumeric)它很接近,但数字部分将按升序排列["111","222","333","aaa","bbb","ccc"]还:sort.Slice(alphanumeric, func(i, j int) bool { return alphanumeric[i] > alphanumeric[j]})结果不想要:["ccc","bbb","aaa","333","222","111"]对所有东西都很新,谢谢你的任何提示
1 回答

SMILET
TA贡献1796条经验 获得超4个赞
https://play.golang.org/p/hS4bo1q2tQl
sort.Slice(alphanumeric, func(i, j int) bool {
// check if we have numbers, sort them accordingly
if z, err := strconv.Atoi(alphanumeric[i]); err == nil {
if y, err := strconv.Atoi(alphanumeric[j]); err == nil {
return y < z
}
// if we get only one number, alway say its greater than letter
return true
}
// compare letters normally
return alphanumeric[j] > alphanumeric[i]
})
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消