我就废话不多说了,大家还是直接看代码 吧~
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)
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“golang将切片或数组根据某个字段进行分组操作”评论...
更新动态
2025年10月24日
2025年10月24日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]