Go语言的数组排序, map的排序

笔者在写项目之中因为一起需求,从本地读取相应的值Json配置表与玩家自己的值进行比较(范围试的比较)从而得出玩家的相应奖励积分.

本地的配置文件读出后 笔者使用map储存的,结果在比较排名的时候 ,笔者发现map的读取是随机的而不是排序的。这样进行区间的比较就出现了问题。所以比开始埋坑之路

第一步我们先准备一个知识点就是数组的排序大小(下面内容是参考的大佬的文章)

对于 int 、 float64 和 string 数组或是分片的排序, go 分别提供了 sort.Ints() 、 sort.Float64s() 和 sort.Strings() 函数, 默认都是从小到大排序。

    intList := [] int {2, 4, 3, 5, 7, 6, 9, 8, 1, 0}
    float8List := [] float64 {4.2, 5.9, 12.3, 10.0, 50.4, 99.9, 31.4, 27.81828, 3.14}
    stringList := [] string {"a", "c", "b", "d", "f", "i", "z", "x", "w", "y"}

    sort.Ints(intList)
    sort.Float64s(float8List)
    sort.Strings(stringList)

第二部我们开始将map的ksy装进到切片之中 通过对切片的排序 从而将map中key的值进行排序 下面是程序(如果你不太懂什么是切片的话 你可以认为是不固定长度的数据,具体了解参照下面这个go教程的网址)

http://www.runoob.com/go/go-slice.html

lid.rankScore这个是一个map 的  中放着一个结构体 包括了 

type LunjianRankScore struct {
   Rank      string  
   Score     string  
}

key是Rank

	var RankScore_map []int = make([]int, 0)//建立一个切片
		if(len(RankScore_map)==0) {//判断之前有没有机进行添加切片  有的话就不必在进入例如
			for _, v := range lid.rankScore {
				RankScore_map = append(RankScore_map, LunjianAtoiIgnorError(v.Rank)) //将map中的自己排名加入元素中去
				//println("我们需要装进去的积分是多少" + v.Rank)
			}
			sort.Ints(RankScore_map)//将装进去的切片按顺序排列出来------这就做第一步的目的
			//for _, v := range RankScore_map {//将内容读取一边
			//	println("我第都出来的是第="+strconv.Itoa(v)+"  相对想的数据排名积分是="+lid.rankScore[ strconv.Itoa(v)].Score)
			//
			//}
		}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值