go语言结构体排序
簡(jiǎn)言
1. ?go語(yǔ)言的基本數(shù)據(jù)類型可以直接調(diào)用sort()函數(shù)進(jìn)行排序
2. ?結(jié)構(gòu)體的排序需要實(shí)現(xiàn)三個(gè)函數(shù)(獲取長(zhǎng)度函數(shù),交換函數(shù),比較函數(shù))即可
實(shí)驗(yàn)如下圖
源代碼如下
package main import ("fmt""sort" )// 學(xué)生信息 type Student struct {Age intScore int }// 結(jié)構(gòu)體數(shù)組 type Students []*Student // 下面的三個(gè)函數(shù)必須實(shí)現(xiàn)(獲取長(zhǎng)度函數(shù),交換函數(shù),比較函數(shù)(這里比較的是年齡)) func (s Students) Len() int {return len(s) } func (s Students) Swap(i, j int) {s[i], s[j] = s[j], s[i] } func (s Students) Less(i, j int) bool {return s[i].Age < s[j].Age }func main() {// 新建3個(gè)學(xué)生信息,這里特意用指針,表示指針也沒(méi)問(wèn)題;當(dāng)然直接用結(jié)構(gòu)體也是可以的Data := []*Student{}Data = append(Data, &Student{Age: 10, Score: 100})Data = append(Data, &Student{Age: 9, Score: 90})Data = append(Data, &Student{Age: 11, Score: 110})sort.Sort(sort.Reverse(Students(Data)))fmt.Printf("根據(jù)年齡從大到小排序 \n")for i := 0; i < len(Data); i++ {fmt.Printf("第%v個(gè)學(xué)生%+v \n", i, Data[i])}sort.Sort(Students(Data))fmt.Printf("\n根據(jù)年齡從小到大排序 \n")for i := 0; i < len(Data); i++ {fmt.Printf("第%v個(gè)學(xué)生%+v \n", i, Data[i])} }?
總結(jié)
- 上一篇: linux中top性能分析工具中的TIM
- 下一篇: df -h 显示100%的解决办法