我就廢話不多說了,大家還是直接看代碼 吧~
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}]]
補充:golang分組和枚舉
我就廢話不多說了,大家還是直接看代碼吧~
package main //同時導入多個包 //import “fmt” //import “errors” //同時聲明多個常量或者變量,那么可以簡化為下面這種分組聲明的方式 //const PI float32 = 3.14 //const NAME string = “hello” //分組聲明 import( “fmt” “errors” ) //常量聲明大寫哈,和c/c++一樣 const( PI = 3.14 NAME = “HELLO” ) //枚舉enum,和c/c++一樣哈都是從0開始 // iota枚舉,默認等于0,同一個分組內沒聲明一個變量那么iota加1 所以 y=1, z=2, j = 5 const( // x = iota // y = iota // z = iota x = iota y = iota z = 6 k p j = iota ) // 遇到一個新的const emun,那么iota就會重置為0,所以h = 0 const( h = iota ) //golang設計原則 //大寫字母開頭的變量,則能被其他包使用的,小寫字母開頭的變量只能當前包使用拉 //函數也是拉,大寫可以被其他包使用,小寫只能當前包使用. func main() { err := errors.New(“hello”) fmt.Println(err) //x=0 y=1 z=2 h=0 // x=0 y=1 z=6 h=0 k=6 j=5 fmt.Printf("x=%d y=%d z=%d h=%d k=%d j=%d\n", x,y,z,h,k,j) }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
標簽:安康 遼寧 青海 西雙版納 儋州 電子產品 物業(yè)服務 海南
巨人網絡通訊聲明:本文標題《golang將切片或數組根據某個字段進行分組操作》,本文關鍵詞 golang,將,切片,或,數組,根據,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。