go數組對象排序

go數組對象排序

對象數組排序

service

package service

import (
    "fmt"
    "sort"
)

type Person struct {
    Name string `json:"name"`
    Sex  string `json:"sex"`
    Age  int    `json:"age"`
}
type PersonSort []Person

//PersonSort 實現sort SDK 中的Interface接口

func (s PersonSort) Len() int { 
    //返回傳入數據的總數
    return len(s) 
}
func (s PersonSort) Swap(i, j int) {
    //兩個對象滿足Less()則位置對換
    //表示執行交換數組中下標為i的數據和下標為j的數據
    s[i], s[j] = s[j], s[i]
}
func (s PersonSort) Less(i, j int) bool {
    //按字段比較大小,此處是降序排序
    //返回數組中下標為i的數據是否小于下標為j的數據
    return s[i].Age > s[j].Age
}

func SortSlice() {
    var mD []Person

    m16 := Person{
        Name: "xj16",
        Sex:  "男16",
        Age:  16,
    }
    mD = append(mD, m16)
    m55 := Person{
        Name: "xj55",
        Sex:  "男55",
        Age:  55,
    }
    mD = append(mD, m55)
    m18 := Person{
        Name: "xj18",
        Sex:  "男18",
        Age:  18,
    }
    mD = append(mD, m18)
    m25 := Person{
        Name: "xj25",
        Sex:  "男25",
        Age:  25,
    }
    m15 := Person{Name: "xj15",
        Sex: "男15",
        Age: 15,
    }
    mD = append(mD, m15)
    mD = append(mD, m25)
    fmt.Printf("排序前:%+v\n", mD)
    sort.Sort(PersonSort(mD))
    fmt.Printf("排序后:%+v\n", mD)
}

排序前:[{Name:xj16 Sex:男16 Age:16} {Name:xj55 Sex:男55 Age:55} {Name:xj18 Sex:男18 Age:18} {Name:xj15 Sex:男15 Age:15} {Name:xj25 Sex:男25 Age:25}]

排序后:[{Name:xj55 Sex:男55 Age:55} {Name:xj25 Sex:男25 Age:25} {Name:xj18 Sex:男18 Age:18} {Name:xj16 Sex:男16 Age:16} {Name:xj15 Sex:男15 Age:15}]

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容