【Golang】结构体排序,Sort方法的使用

题目

定义学生结构体,包含姓名、年龄和分数,随机生成十个学生信息,根据学生分数进行降序排列(使用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))
}

样例输出:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孑然R

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值