golang从结构体切片里面排序找出最大值
可以通过使用sort包中的Sort()函数来对结构体切片进行排序,然后找出最大值。
首先,定义一个结构体类型,例如:
type Person struct {
Name string
Age int
}
然后,创建一个结构体切片并初始化:
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
}
接下来,定义一个排序的函数,该函数需要实现sort.Interface接口的三个方法:Len()、Less()和Swap():
func (p []Person) Len() int {
return len(p)
}
func (p []Person) Less(i, j int) bool {
return p[i].Age < p[j].Age
}
func (p []Person) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
最后,调用sort.Sort()函数对结构体切片进行排序,并找出最大值:
sort.Sort(people)
maxAge := people[len(people)-1].Age
fmt.Println("最大年龄:", maxAge)
完整的代码示例:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func (p []Person) Len() int {
return len(p)
}
func (p []Person) Less(i, j int) bool {
return p[i].Age < p[j].Age
}
func (p []Person) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
func main() {
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
}
sort.Sort(people)
maxAge := people[len(people)-1].Age
fmt.Println("最大年龄:", maxAge)
}
输出结果为:
最大年龄: 30
原文地址: https://www.cveoy.top/t/topic/iiKg 著作权归作者所有。请勿转载和采集!