Golang 根据字符串首字符排序,要求顺序:特殊字符 > 数字 > 英文 > 中文按照拼音排序

本文介绍如何使用Golang实现字符串排序,优先级为特殊字符>数字>英文>中文,中文部分按照拼音排序。通过collate包创建自定义比较器并提供代码示例和单元测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:优先特殊字符,其次数字,然后英文,最后中文按照拼音排序

思路:创建一个用于中文字符排序的比较器 c := collate.New(language.Chinese, collate.Numeric)

代码示例

GitHub 完整示例代码

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 == 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值