我试图通过对字符串中的字节切片进行排序(使用 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
函数中。
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消