快速将map转为有序数组

  1. 将map的key取出放到一个slice s中
  2. 将这个s排序
  3. 遍历_, v := range s, 从map中取出值: map[v], 依次放到数组中
var err error
msgs = make([]*configModel.SysMailMsg, len(cacheMap))
keys := make([]int, len(cacheMap))

i := 0
for k, _ := range cacheMap {
   if keys[i], err = strconv.Atoi(k); err != nil {
      return nil, err
   }
   i++
}
sort.Ints(keys)
mi := 0
for _, v := range keys {
   var tmp configModel.SysMailMsg
   json.UnmarshalFromString(cacheMap[strconv.Itoa(v)], &tmp)
   msgs[mi] = &tmp
   mi++
}

猜你喜欢

转载自blog.csdn.net/Horsdy123/article/details/118196247