Go语言Sort包的深入解析及常见用法

silverwq
2023-12-15 / 1 评论 / 164 阅读 / 正在检测是否收录...

SliceStable 实例讲解

本文章向大家介绍GO SliceStable实例讲解,主要分析其语法、参数、返回值和注意事项,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

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}]
0

评论 (1)

取消
  1. 头像
    asdf
    Windows 10 · Google Chrome

    11d得法

    回复