golang將切片或陣列根據某個欄位進行分組
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
p1 := Person{"Tom",20}
p2 := Person{"Lily",21}
p3 := Person{"Linda",23}
p4 := Person{"Jass",25}
p5 := Person{"Tonny",20}
p6 := Person{"Pite",25}
p7 := Person{"Paul",21}
p8 := Person{"Kriss",27}
p9 := Person{"Jake",23}
p10 := Person{"Rose",20}
personList := []Person{}
personList = append(personList,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
fmt.Println("分組前的資料:",personList)
fmt.Println("分組後的資料:",splitSlice(personList))
}
//按某個欄位排序
type sortByAge []Person
func (s sortByAge) Len() int { return len(s) }
func (s sortByAge) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
func (s sortByAge) Less(i, j int) bool { return s[i].Age < s[j].Age}
//切片分組
func splitSlice(list []Person) [][]Person {
sort.Sort(sortByAge(list))
returnData := make([][]Person,0)
i:= 0
var j int
for {
if i >= len(list) {
break
}
for j = i + 1; j< len(list) && list[i].Age == list [j].Age; j++ {}
returnData = append(returnData,list[i:j])
i = j
}
return returnData
}
列印結果如下:分組前的資料: [{Tom 20} {Lily 21} {Linda 23} {Jass 25} {Tonny 20} {Pite 25} {Paul 21} {Kriss 27} {Jake 23} {Rose 20}]
分組後的資料: [[{Tom 20} {Rose 20} {Tonny 20}] [{Lily 21} {Paul 21}] [{Linda 23} {Jake 23}] [{Pite 25} {Jass 25}][{Kriss 27}]]
相關文章
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- js物件陣列(JSON) 根據某個共同欄位 分組物件陣列JSON
- 二維陣列根據某個欄位排序陣列排序
- list集合根據某欄位分組
- PHP二維陣列根據某個欄位排序PHP陣列排序
- 二維陣列根據欄位進行排序陣列排序
- python-進階教程-根據欄位將記錄分組Python
- [PY3]——根據某個特定的欄位來分組迭代訪問一個欄位或序列?/ itertools.groupby( )函式函式
- 根據陣列中物件進行排序陣列物件排序
- SQL Server中根據某個欄位,ID欄位自動增長的實現SQLServer
- 二維陣列根據鍵的值進行排序陣列排序
- Python實用技法第14篇:根據欄位將記錄分組:itertools.groupby()Python
- 如何插入關聯表資料,或插入資料的時候執行,根據某欄位執行一個函式函式
- PHP陣列多個欄位分別排序PHP陣列排序
- (二)golang陣列和切片Golang陣列
- php 對二維陣列的某個欄位公用排序的方法PHP陣列排序
- golang切片和陣列的區別Golang陣列
- SQL 如何在時間序列中根據欄位變化分組SQL
- js記一個根據欄位排序物件函式JS排序物件函式
- Go 如何對陣列切片進行去重Go陣列
- Golang 陣列和切片 Slice 和 Map 使用Golang陣列
- Golang切片和陣列底層詳解Golang陣列
- 深入學習golang(1)—陣列與切片Golang陣列
- 根據欄位名查詢所有表
- 物件陣列 根據key 把一樣的push到一個陣列物件陣列
- jQuery將當前陣列根據一定規則轉為其他陣列jQuery陣列
- sql根據多個欄位查詢重複記錄SQL
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- MySQL-取某個欄位表中每組幾行資料方式MySql
- 根據欄位名等查詢SAP的表或結構(程式程式碼)
- java8的stream將一個List轉為按照某個欄位分組的map,再按照另一個欄位取max最終得到一個mapJava
- MongoDB根據內嵌文件的某個鍵刪除陣列元素的兩種方法介紹MongoDB陣列
- 根據陣列的值刪除元素陣列
- oracle根據分組查百分比Oracle
- jQuery根據表格欄位升序和降序詳解jQuery
- java中檢驗字串中包含某個字元或欄位的方法Java字串字元
- php 陣列根據元素從小到大排序PHP陣列排序
- CYmysql根據json欄位內容作為查詢條件(包括json陣列)檢索資料dvnMySqlJSON陣列