golang 按第一个元素对 slice slice 进行排序

标签 go slice

我正在尝试对我的子 slice (在 slice 内)进行排序,我的 slice 是从

var s [][]int64
s = append(s, []int64{2, 60, 55, 5})
s = append(s, []int64{4, 45, 35, 10})
s = append(s, []int64{1, 200, 160, 40})
fmt.Println(s) # [[2 60 55 5] [4 45 35 10] [1 200 160 40]]

如何按要成为的第一个元素对其值进行排序:

[[1 200 160 40] [2 60 55 5] [4 45 35 10]]

最佳答案

问题没有说明应该如何处理空 slice ,因此在传统的词排序中将它们视为空词,会将它们放在第一位,这样就可以处理这种边缘情况:

import "sort"

sort.Slice(s, func(i, j int) bool {
    // edge cases
    if len(s[i]) == 0 && len(s[j]) == 0 {
        return false // two empty slices - so one is not less than other i.e. false
    }
    if len(s[i]) == 0 || len(s[j]) == 0 {
        return len(s[i]) == 0 // empty slice listed "first" (change to != 0 to put them last)
    }

    // both slices len() > 0, so can test this now:
    return s[i][0] < s[j][0]
})

Playground version .

关于golang 按第一个元素对 slice slice 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55360091/

相关文章:

python - 使用 numpy 切片数组索引 numpy 数组

Go 模块与包

go - golang安装覆盖包时出现的问题

go - 使用 go-client 在 Istio-resource 上设置 ObjectMeta

python - 根据值或列表的变化切片 python 数据框

javascript - 使用 javascript 创建堆叠数组

go - 在 golang 中导入自定义包

javascript - XMLHttpRequest 无法加载 localhost 资源,安全检查是 Chrome

python - 如何对每个包含两个列表的列表进行切片?

go - 将嵌套结构中的 slice 传递给 Go 中的 Revel 模板