当前位置: > > > > 将切片调整为新顺序
将切片调整为新顺序
来源:stackoverflow
2024-04-25 11:09:36
0浏览
收藏
本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《将切片调整为新顺序》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~
问题内容
我有一个类型…
type mytype struct {
job string `json:"job"`
cost string `json:"cost"`
}
这种类型的切片…
var records []mytype
它的填充如下…
records = append(records, MyType{Job: 100, Cost:234},)
records = append(records, MyType{Job: 101, Cost:4000},)
records = append(records, MyType{Job: 102, Cost:700},)
我想按成本降序对“行”进行排序,所以…
records[0].job 等于 101 记录[0].成本等于 4000
records[1].job 等于 102 记录[1]。成本等于 700
records[2].job 等于 100 记录[2]。成本等于 234
在 c# 中,我通常会使用 linq,但我是新手,不知道如何解决这个问题…
解决方案
首先 json 类型无效。成本应为 int 类型
试试这个代码
import (
"fmt"
"sort"
)
type records []mytype
type mytype struct {
job int `json:"job"`
cost int `json:"cost"`
}
func (r records) len() int { return len(r) }
func (r records) swap(i, j int) { r[i], r[j] = r[j], r[i] }
func (r records) less(i, j int) bool { return r[i].cost > r[j].cost }
func main() {
records := make(records, 0, 1000)
records = append(records, mytype{job: 100, cost: 234})
records = append(records, mytype{job: 101, cost: 4000})
records = append(records, mytype{job: 102, cost: 700})
sort.sort(records)
fmt.println(records)
}
或者没有自定义切片
type mytype struct {
job int `json:"job"`
cost int `json:"cost"`
}
func main() {
records := make([]mytype, 0, 1000)
records = append(records, mytype{job: 100, cost: 234})
records = append(records, mytype{job: 101, cost: 4000})
records = append(records, mytype{job: 102, cost: 700})
sort.slice(records, func(i, j int) bool {
return records[i].cost > records[j].cost
})
fmt.println(records)
}
输出
[{101 4000} {102 700} {100 234}]
参考号
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《将切片调整为新顺序》文章吧,也可关注米云公众号了解相关技术文章。
