【golang】golang 字符串切片排序

简介: 【golang】golang 字符串切片排序

按字母排序

strs := []string{"c", "b", "a"}
sort.Strings(strs)
// strs is now ["a", "b", "c"]

自定义排序

strs := []string{"c", "b", "a"}
sort.Slice(strs, func(i, j int) bool {
    return strs[i] < strs[j]  // 字母序排序
})  
// strs is now ["a", "b", "c"]
 

排序反转


strs := []string{"c", "b", "a"}
sort.Strings(strs)     // ["a", "b", "c"]
sort.Reverse(strs) 
// strs is now ["c", "b", "a"]

结构体排序

对结构体切片排序时,需要传递一个自定义排序函数sort.Slice()或sort.Sort(),指定按哪个字段排序。例如:

type User struct {
    Name string
    Age  int
}

users := []User{
    {"Bob", 31},
    {"John", 42},
    {"Michael", 17},
}

// 按Age排序
sort.Slice(users, func(i, j int) bool {
    return users[i].Age < users[j].Age
})
目录
相关文章
|
20天前
|
Go
【golang】Go 判断字符串是否包含指定字符
【golang】Go 判断字符串是否包含指定字符
13 1
|
2月前
|
Go 索引
Golang深入浅出之-切片(Slices)入门:创建、操作与扩容机制
【4月更文挑战第20天】Go语言中的切片是动态数组,提供灵活的操作和自动扩容。本文介绍了切片的创建(通过`make()`、数组创建和切片字面量)、基本操作(索引访问、切片、赋值追加和遍历)以及扩容机制(首次和后续扩容策略)。此外,还强调了切片与底层数组的关系、切片越界问题、`append()`的使用以及理解切片的关键点,帮助提升Go编程效率和代码质量。
55 0
|
2月前
|
存储 Go 开发者
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
【4月更文挑战第20天】Go语言字符串是不可变的字节序列,采用UTF-8编码。本文介绍了字符串基础,如拼接(`+`或`fmt.Sprintf()`)、长度与索引、切片、查找与替换(`strings`包)以及转换与修剪。常见问题包括字符串不可变性、UTF-8编码处理、切片与容量以及查找与替换的边界条件。通过理解和实践这些函数及注意事项,能提升Go语言编程能力。
43 0
|
2月前
|
存储 Go
第八章 Golang排序和查找
第八章 Golang排序和查找
28 3
|
2月前
|
程序员 Go
第七章 Golang数组和切片
第七章 Golang数组和切片
29 2
|
2月前
|
Go
Golang拼接字符串性能对比
【2月更文挑战第8天】Golang拼接字符串性能对比
51 2
|
2月前
|
Java 容器 程序员
Java语言程序设计试卷6套
Java语言程序设计试卷6套
382 0
Java语言程序设计试卷6套
|
2月前
|
Java Go C++
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
48 0
Golang每日一练(leetDay0120) 反转字符串中的元音字母、前K个高频元素
|
2月前
|
Go 机器学习/深度学习 Rust
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
56 0
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
|
2月前
|
Java Go C++
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
33 0
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort