问题:在golang中如何对一个字符串,例如"dcdea",进行内部排序,变成"acdde"?
解决方法:
package main
import (
"fmt"
"sort"
)
func main () {
str := "dcdea汉字"
runeArr := []rune(str)
sort.Slice(runeArr, func(i, j int) bool {
return runeArr[i] < runeArr[j] // 正序
})
str = string(runeArr)
fmt.Println(str)
}
输出:
acdde字汉
原理简介:
string
类型可以认为是只读的byte
数组
rune
类型是int32
的alias,存储Unicode码点
func Slice(x any, less func(i, j int) bool)
是sort包提供的对Slice的排序函数,传入一个任意类型的Slice和一个比较函数less