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物件陣列(JSON) 根據某個共同欄位 分組物件陣列JSON
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- 二維陣列根據某個欄位排序陣列排序
- list集合根據某欄位分組
- 二維陣列根據欄位進行排序陣列排序
- SqlServer根據特定欄位分組後,對需要欄位進行分組拼接SQLServer
- python-進階教程-根據欄位將記錄分組Python
- Python實用技法第14篇:根據欄位將記錄分組:itertools.groupby()Python
- 二維陣列根據鍵的值進行排序陣列排序
- 如何插入關聯表資料,或插入資料的時候執行,根據某欄位執行一個函式函式
- PHP陣列多個欄位分別排序PHP陣列排序
- 根據欄位查表名
- (二)golang陣列和切片Golang陣列
- Java根據前端返回的欄位名進行查詢資料Java前端
- golang切片和陣列的區別Golang陣列
- Java根據前端返回的欄位名進行查詢資料的方法Java前端
- Go 如何對陣列切片進行去重Go陣列
- SQL 如何在時間序列中根據欄位變化分組SQL
- 查詢陣列中相似欄位(陣列裡面某個值相似歸類到一起)陣列
- 物件陣列 根據key 把一樣的push到一個陣列物件陣列
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- sql根據多個欄位查詢重複記錄SQL
- Golang 陣列和切片 Slice 和 Map 使用Golang陣列
- Golang切片和陣列底層詳解Golang陣列
- 根據陣列的值刪除元素陣列
- java8的stream將一個List轉為按照某個欄位分組的map,再按照另一個欄位取max最終得到一個mapJava
- CYmysql根據json欄位內容作為查詢條件(包括json陣列)檢索資料dvnMySqlJSON陣列
- 使用spring.cloud.stream來傳送kafka訊息,並根據某欄位將訊息傳送到固定partition上SpringCloudKafka
- [golang]-根據json中的某個key的值輸出對應的idGolangJSON
- jQuery根據表格欄位升序和降序詳解jQuery
- Golang 基礎-資料型別-陣列和切片Golang資料型別陣列
- php 陣列根據元素從小到大排序PHP陣列排序
- mysql資料表按照某個欄位分類輸出MySql
- SpringJpa @query 中根據傳入引數(欄位)排序Spring排序
- python以16進位制列印位元組陣列Python陣列
- Go 陣列&切片Go陣列
- SQL-分組聚合 - 單欄位分組SQL
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序