gpt4 book ai didi

go - 将 slice 调整为新顺序

转载 作者:IT王子 更新时间:2023-10-29 02:35:19 24 4
gpt4 key购买 nike

我有一个类型...

type MyType struct {
Job string `json:"Job"`
Cost string `json:"Cost"`

}

这种类型的 slice ......

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)
}

或没有自定义 slice

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}]

引用 https://golang.org/pkg/sort/#Slice

关于go - 将 slice 调整为新顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55966715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com