为了账号安全,请及时绑定邮箱和手机立即绑定

为什么排序“tan”!=“ant”?

为什么排序“tan”!=“ant”?

Go
吃鸡游戏 2023-07-04 16:56:06
我试图通过对字符串中的字节切片进行排序(使用 sort.Slice)来对字符串中的字符进行排序。我使用的代码有时会得到正确的结果,但有时会产生我无法理解的结果。package mainimport (    "fmt"    "sort")func main() {    for _, s := range []string{"nat", "tan", "ant"} {        b := []byte(s)        sort.Slice(b, func(i int, j int) bool { return s[i] < s[j] })        fmt.Println(s, string(b))    }}https://play.golang.org/p/bC9QWq7aF3G我希望“nat”、“tan”和“ant”都被排序为“ant”,但“tan”被排序为“atn”。
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

将您的sort.Slice行更改为:

sort.Slice(b, func(i int, j int) bool { return b[i] < b[j] })

sort.Slice需要您的less函数来比较切片中的值,以便按照您想要的方式进行排序。你的错误是你使用了s而不是b在你的less函数中。


查看完整回答
反对 回复 2023-07-04
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信