登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-18 21:06:26 374浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《golang 按第一个元素对切片进行排序》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在尝试对我的子切片(切片内)进行排序,我的切片是从创建的

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

解决方案


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

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

演示version

func slicesort(arr [][]int){
   
    sort.Slice(arr, func(i, j int) bool{
        if arr[i][1]>arr[j][1]{
            return true
        }
        if arr[i][1]==arr[j][1] && arr[i][0]

到这里,我们也就讲完了《golang 按第一个元素对切片进行排序》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>