Golang 根据字符串首字符排序,要求顺序:特殊字符 > 数字 > 英文 > 中文按照拼音排序
目的:优先特殊字符,其次数字,然后英文,最后中文按照拼音排序
思路:创建一个用于中文字符排序的比较器 c := collate.New(language.Chinese, collate.Numeric)
代码示例
import (
"sort"
"golang.org/x/text/collate"
"golang.org/x/text/language"
)
// 该接口定义一个获取排序字段的函数
type SortByStringAble interface {
GetStrSortField() string
}
func SortByString[T SortByStringAble](list []T, sortType string) []T {
// 创建一个用于中文字符排序的比较器
c := collate.New(language.Chinese, collate.Numeric)
// 使用 sort.SliceStable 保持稳定排序
sort.SliceStable(list, func(i, j int) bool {
if sortType ==