【go技巧】结构体类型的切片按照从小到大排序

目录

结构体类型的切片按照从小到大排序


结构体类型的切片按照从小到大排序

可以使用 Go 语言中的 sort.Slice() 函数对结构体类型的切片进行排序。该函数接受一个切片和一个 less 函数作为参数,less 函数用于比较切片中的元素并按照指定顺序排序。

下面是一个示例代码,演示了如何使用 sort.Slice() 对结构体类型的切片按照从小到大排序:

package main

import (
	"fmt"
	"sort"
)

type Person struct {
	Name   string
	Age    int
	Gender string
}

func main() {
	persons := []Person{
		{Name: "Alice", Age: 25, Gender: "Female"},
		{Name: "Bob", Age: 30, Gender: "Male"},
		{Name: "Charlie", Age: 20, Gender: "Male"},
		{Name: "David", Age: 35, Gender: "Male"},
		{Name: "Eva", Age: 28, Gender: "Female"},
	}

	fmt.Println("Before sorting:", persons)

	// 使用 sort.Slice() 对结构体类型的切片进行排序
	sort.Slice(persons, func(i, j int) bool {
		return persons[i].Age < persons[j].Age
	})

	fmt.Println("After sorting:", persons)
}

在这个示例代码中,我们首先定义了一个包含多个 Person 结构体的切片 persons。然后,在输出原始切片的值后,我们调用 sort.Slice() 函数对其进行从小到大的排序。在 less 函数中,我们定义了比较函数,按照 Age 字段进行比较,因此最终切片将按照从小到大的年龄顺序排列。

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/131175361