题目
定义学生结构体,包含姓名、年龄和分数,随机生成十个学生信息,根据学生分数进行降序排列(使用Sort方法)
Sort方法:
样例代码:
package main
import (
"fmt"
"math/rand"
"sort"
"encoding/json"
)
// 定义用于存储学生信息的结构体
type Student struct {
Name string `json:"姓名"`
Age int `json:"年龄"`
Score float64 `json:"分数"`
}
//用于存储多个学生信息的切片
type StuSlice []Student
//Len方法返回集合中的元素个数
func (ss StuSlice) Len() int {
return len(ss)
}
// Less方法报告索引i的元素是否比索引j的元素小
func (ss StuSlice) Less(i, j int) bool {
return ss[i].Score > ss[j].Score //按照分数降序排列
}
// Swap方法交换索引i和j的两个元素
func (ss StuSlice) Swap(i, j int) {
ss[j],ss[i] = ss[i],ss[j]
}
func main(){
var stuSlice StuSlice //用于存储所有学生信息的切片
//使用循环生成十个学生信息
for i := 0; i < 10; i++ {
//创建学生信息
var stu Student = Student{
Name : fmt.Sprintf("学生-%d", rand.Intn(100)),
Age : rand.Intn(100),
Score : float64(rand.Intn(100)),
}
stuSlice = append(stuSlice, stu) //将学生信息追加到stuSlice
}
//排序前
value, _ := json.Marshal(stuSlice)
fmt.Println(string(value))
//排序操作 按照分数降序排列
sort.Sort(stuSlice)
//排序后
value, _ = json.Marshal(stuSlice)
fmt.Println(string(value))
}