在 Go 语言中,可以使用 sort 包对结构体切片进行排序。下面是一个示例代码:

package main

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string
    Age  int
}

type ByAge []Person

func (a ByAge) Len() int           { return len(a) }
func (a ByAge) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }

func main() {
    people := []Person{
        {"Alice", 25},
        {"Bob", 30},
        {"Charlie", 20},
    }

    fmt.Println(people)

    sort.Sort(ByAge(people))

    fmt.Println(people)
}

在上面的代码中,我们定义了一个 Person 结构体和一个 ByAge 类型,ByAge 类型是 Person 结构体的切片类型,并且实现了 sort.Interface 接口的三个方法:Len()Swap()Less()。其中,Less() 方法是用来比较两个元素大小的,我们在这里按照年龄从小到大排序。

main() 函数中,我们创建了一个 people 切片,并且打印出来,然后调用 sort.Sort() 函数对其进行排序,最后再打印出来,可以看到已经按照年龄从小到大排序了。

Golang 结构体切片排序:使用 sort 包实现

原文地址: https://www.cveoy.top/t/topic/kNwA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录