GO语言"sort"包中"SliceStable"函数的用法及代码示例。
用法:
func SliceStable(x any, less func(i, j int) bool)
SliceStable 使用提供的 less 函数对切片 x 进行排序,保持相等元素的原始顺序。如果 x 不是切片,它会Panics。
less 函数必须满足与接口类型的 Less 方法相同的要求。
例子:
package main
import (
"fmt"
"sort"
)
func main() {
people := []struct {
Name string
Age int
}{
{"Alice", 25},
{"Elizabeth", 75},
{"Alice", 75},
{"Bob", 75},
{"Alice", 75},
{"Bob", 25},
{"Colin", 25},
{"Elizabeth", 25},
}
// Sort by name, preserving original order
sort.SliceStable(people, func(i, j int) bool { return people[i].Name < people[j].Name })
fmt.Println("By name:", people)
// Sort by age preserving name order
sort.SliceStable(people, func(i, j int) bool { return people[i].Age < people[j].Age })
fmt.Println("By age,name:", people)
}
输出:
By name: [{Alice 25} {Alice 75} {Alice 75} {Bob 75} {Bob 25} {Colin 25} {Elizabeth 75} {Elizabeth 25}] By age,name: [{Alice 25} {Bob 25} {Colin 25} {Elizabeth 25} {Alice 75} {Alice 75} {Bob 75} {Elizabeth 75}]
相关用法
- GO Slice用法及代码示例
- GO Sleep用法及代码示例
- GO Scanner.Scan用法及代码示例
- GO StreamWriter用法及代码示例
- GO Split用法及代码示例
- GO Server.Shutdown用法及代码示例
- GO StructTag.Lookup用法及代码示例
- GO SplitAfter用法及代码示例
- GO Sum256用法及代码示例
- GO SectionReader用法及代码示例
- GO Sin用法及代码示例
- GO Sprintf用法及代码示例
- GO Strings用法及代码示例
- GO SendMail用法及代码示例
- GO StructTag用法及代码示例
- GO Stmt用法及代码示例
- GO Sprint用法及代码示例
- GO SpecialCase用法及代码示例
- GO SectionReader.ReadAt用法及代码示例
- GO StructOf用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 SliceStable。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。