按照中文首字母排序Go语言实现


汉语转拼音

go get -u github.com/mozillazg/go-pinyin

结构体

// 结构体
type ProductListView struct {
    Id          int    `gorm:"primary_key;" json:"id"`
    TradeBrand  string `json:"trade_brand"`
    TradeName   string `json:"trade_name"`
    FirstLetter string `json:"first_letter"` // 首字母
}

获取首字母

// 获取首字母
func GetFirstLetter(str string) string {
    args := pinyin.NewArgs()
    args.Style = pinyin.FIRST_LETTER
    tradeBrand := strings.Replace(str, " ", "", -1)
    a := pinyin.Pinyin(tradeBrand, args)
    if len(a) > 0 {
        return strings.ToUpper(a[0][0])
    } else {
        return strings.ToUpper(tradeBrand[:1])
    }
}

算法实现

// 按照首字母 冒泡排序算法
func firstLetterSort(arr []ProductListView) []ProductListView {
    length := len(arr)
    for i := 0; i < length-1; i++ {
    // 是否交换数据
        flag := false
        for j := 0; j < length-1-i; j++ {
            // 相邻元素两两对比
            if arr[j].FirstLetter > arr[j+1].FirstLetter {
                // 元素交换
                temp := arr[j+1]
                arr[j+1] = arr[j]
                arr[j] = temp
        flag = true
            }
        }
    if !flag {
            break
        }
    }
    return arr
}

欢迎关注微信公众号:【皮卡战记】

皮卡战记

文章作者: Pikaman
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pikaman !
评论
 上一篇
微信公众号Token验证 微信公众号Token验证
微信公众号开发之前需要配置服务器,配置服务器的时候要进行Token验证,具体方法可参考官方文档 关键步骤 main.py # -*- coding: utf-8 -*- # filename: main.py import web fro
2020-05-27
下一篇 
【转载】RocketMQ 分享全纪实 【转载】RocketMQ 分享全纪实
转载自 https://www.jianshu.com/p/78076f383c00 为什么分享 RocketMQ为什么没有选择 Kafka 而是 RocketMQ 呢,没有什么特别的原因,单纯是我之前就看过一点 RocketMQ 的源
2020-05-19
  目录