How to sort struct with multiple sort parameters?

前端 未结 8 600
囚心锁ツ
囚心锁ツ 2020-12-24 11:24

I have an array/slice of members:

type Member struct {
    Id int
    LastName string
    FirstName string
}

var members []Member

My quest

8条回答
  •  长情又很酷
    2020-12-24 12:03

    This has been very helpful. I needed to sort a slice of structs, and found my answer here. I actually extended it to triply-sorting. Although sorting this much is not optimal for runtime purposes, it's useful in some circumstances, especially when the alternative leads to code that is hard to maintain or modify and where faster runtimes are not crucial.

    sort.Slice(servers, func(i, j int) bool {
            if servers[i].code < servers[j].code {
                return true
            } else if servers[i].code > servers[j].code {
                return false
            } else {
                if servers[i].group < servers[j].group {
                    return true
                } else {
                    if servers[i].group > servers[j].group {
                        return false
                    }
                }
            }
            return servers[i].IDGroup < servers[j]. IDGroup
        })
    

    This code sorts first by code, then by group, then by IDGroup.

提交回复
热议问题