sort.Strings排序默认是按照Unicode码点的顺序的。

如果需要按照拼音排序, 可以通过GBK转换实现, 自定义一个排序接口, 这里的排序优先级 数字>字母>汉字

代码如下:

package mainimport ("bytes""fmt""io/ioutil""sort""golang.org/x/text/encoding/simplifiedchinese""golang.org/x/text/transform"
)type Animal struct {Id   intName stringAge  int
}
type Animals []Animalfunc (a Animals) Len() int { return len(a) }
func (s Animals) Less(i, j int) bool {a, _ := UTF82GBK(s[i].Name)b, _ := UTF82GBK(s[j].Name)bLen := len(b)for idx, chr := range a {if idx > bLen-1 {return false}if chr != b[idx] {return chr < b[idx]}}return true
}
func (a Animals) Swap(i, j int) { a[i], a[j] = a[j], a[i] }//UTF82GBK : transform UTF8 rune into GBK byte array
func UTF82GBK(src string) ([]byte, error) {GB18030 := simplifiedchinese.All[0]return ioutil.ReadAll(transform.NewReader(bytes.NewReader([]byte(src)), GB18030.NewEncoder()))
}//GBK2UTF8 : transform  GBK byte array into UTF8 string
func GBK2UTF8(src []byte) (string, error) {GB18030 := simplifiedchinese.All[0]bytes, err := ioutil.ReadAll(transform.NewReader(bytes.NewReader(src), GB18030.NewDecoder()))return string(bytes), err
}func main() {an := Animals{Animal{Id: 1, Name: "请求", Age: 11},Animal{Id: 2, Name: "当当", Age: 22},Animal{Id: 3, Name: "呃呃", Age: 33},Animal{Id: 4, Name: "z奥啊", Age: 44},Animal{Id: 5, Name: "宝宝z", Age: 55},Animal{Id: 6, Name: "宝宝a", Age: 6},}sort.Sort(an)fmt.Println(an)//[{4 z奥啊 44} {6 宝宝a 6} {5 宝宝z 55} {2 当当 22} {1 请求 11} {3 呃呃 33}]
}

Golang对中文汉字进行拼音排序相关推荐

  1. 中文汉字按拼音排序并按字母分类(uniapp indexedList索引列表格式匹配)

    最近做uni-app项目,遇到中文排序,使用indexedList组件布局渲染.自己也是查询了很多资料,https://www.cnblogs.com/wteng/p/5658972.html展现了一 ...

  2. js中文汉字按拼音排序

    1,datatable拓展 按中文排序 jQuery.extend( jQuery.fn.dataTableExt.oSort, {"chinese-string-asc" : f ...

  3. js 中文汉字按拼音排序,浏览器英文环境也可正确运行

    之前在其他地方看的zh字母分类列表不对,导致部分排序错误,特此记录 最重要的首拼汉字列表: 阿八嚓耷妸发旮哈丌咔垃妈嗯喔妑七呥仨他穵夕丫帀 // sourceData: [{ id: restaura ...

  4. Java汉字按照拼音排序

    最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...

  5. java拼音搜索排序算法_Java汉字按照拼音排序

    最近项目上使用到汉字排序的问题,网上搜索了一下后普遍使用下面的方法比较. @Test public void test_sort_pinyin() { Collator cmp = Collator. ...

  6. mysql中的汉字怎么转换_Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    一.创建拼音对照表 代码如下: -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) ...

  7. 表格排序 支持汉字按拼音排序,面向对象的使用方法

    周末无聊利用swapNode方法写了个排序算法,性能比较一般,超简单的冒泡排序,但是由于使用了swapNode,所以TR以及TD对象后绑定的属性不会丢失,同时解决了checkbox在swapNode后 ...

  8. mysql root dengru_Mysql学习Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    <Mysql学习Mysql中文汉字转拼音的实现(每个汉字转换全拼)>要点: 本文介绍了Mysql学习Mysql中文汉字转拼音的实现(每个汉字转换全拼),希望对您有用.如果有疑问,可以联系我 ...

  9. 解决中文名单按拼音排序的问题

    1.问题 在个人的开发工作中,遇到问题:当时在CRM的客户列表中,拉取客户所属人下拉框功能时,发现系统加载所有用户名称名单,如下图. 解决前原图 问题来了,业务员名称在下拉框的列表中,并没有按照正常惯 ...

  10. javascript按照期望的顺序给对象数组排序,中文汉字大写数字排序

    javascript按照期望的顺序给对象数组排序,中文汉字大写数字排序.这种方法也可用到sql语句中. var arrayExpected = ['一年级', '二年级', '三年级', '四年级', ...

最新文章

  1. java求平均值过程不输入,java-Flink:有没有其他方法来计算平均值和一个状态变量,而不是使用RichAggregateFunction?...
  2. Laravel 中查询 where 记录
  3. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | Instrumentation 源码分析 )
  4. 判断多个点在多边形内的在线算法
  5. sql 包含_SQL笔记:在一张包含学生ID、课程、成绩的表中,检索各科前三名
  6. myeclipse打包java文件_MyEclipse将Java项目打包成jar文件的三种方法
  7. php 操作 MySQL 中的Blob类型
  8. Java:数组排序输出
  9. Spring中 BeanFactory 与 FactoryBean 的区别
  10. 无标度网络 matlab,无标度网络及MATLAB建模
  11. 微信红包发送关键代码
  12. 卸载office 2016 报错:错误1321
  13. OEL安装RAC 配置DNS文档
  14. cygwin安装apt-cyg工具
  15. Windows 小工具软件:截屏,录音,音频转换
  16. 2020年节假日JSON,全年日期对应的上班日、周末、节假日
  17. linux和windows下分别如何查看电脑是32位的还是64位?
  18. 我要减肥~~~~~!!!(信誓旦旦)
  19. sld样式文件demo
  20. 数据预处理--对偏态数据

热门文章

  1. python获取验证码失败_python 爬虫:验证码一直错误
  2. 计算机系统时间错了,电脑时间同步出错怎么办
  3. 批改网复制粘贴_如何使用批改网组织线上考试
  4. 全赔你们要1200亿!知网哭穷:我们一年净赚还不到2亿
  5. 免费教程·开源 | 从零开始制作ROS无人竞速车RACECAR教程
  6. 求生之路4的联机方法和秘籍
  7. 手机熊猫直播怎么投屏
  8. Redis:哈希表HSET、HSETNX、HGET、HEXISTS、HMSET、HMGET、HKEYS、HVALS、HGETALL、HDEL命令介绍
  9. qpython3 l_qpython3安装requirements_Python3安装配置【转】
  10. 批处理命令%~dp0详解