尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

collection教程:Filter、First与Contains的6个技巧,快速筛选和查找数据

collection教程:Filter、First与Contains的6个技巧,快速筛选和查找数据 collection教程Filter、First与Contains的6个技巧快速筛选和查找数据【免费下载链接】collectiongo collection package for fasting coding项目地址: https://gitcode.com/gh_mirrors/collection6/collectioncollection是一个专为快速编码而生的 Go 集合库目标是替换原生 Slice支持 int、string、struct 等十多种元素类型。通过Filter、First、Contains三个核心方法你可以用极少的代码完成数据筛选、取首尾元素和成员判断。本文整理 6 个实用技巧帮助新手快速上手 Go 数组筛选与查找。 快速开始一行代码初始化集合将 collection 引入项目后用NewCollection即可创建任意泛型集合coll : collection.NewCollection([]int{1, 2, 2, 3, 4, 5})基础类型内置了比较函数Filter、Contains 等方法可以开箱即用。技巧1用 Filter 保留满足条件的元素Filter将每个元素和它的下标传入过滤函数只保留返回true的元素并生成新的集合不修改原数据// 只保留偶数 evens : coll.Filter(func(v int, _ int) bool { return v%2 0 }) fmt.Println(evens.Count()) // 2Filter 的完整实现位于 collection.go更多用例可参考文档 docs/method/filter.md。技巧2Reject 是 Filter 的镜像操作想剔除满足条件的元素用Reject即可它与 Filter 语义相反// 去掉所有 2 rest : coll.Reject(func(v int, _ int) bool { return v 2 }) 技巧两个方法可以互换把条件取反即可写代码时选语义更直观的那个。技巧3First / Last 安全获取首尾元素直接coll[0]取值空集合会直接 panic。First/Last在集合为空时返回该类型的零值天然防崩溃first : coll.First() // 1 last : coll.Last() // 5 empty : collection.NewCollection([]int{}) fmt.Println(empty.First()) // 0不会报错技巧4Filter First 链式查找第一个命中项找第一个偶数这类需求非常高频把 Filter 和 First 链式调用一行搞定firstEven : coll.Filter(func(v int, _ int) bool { return v%2 0 }).First() // 2对 struct 集合同样适用且泛型保证类型安全无需类型断言type User struct { Name string Age int } users : collection.NewCollection([]User{ {Alice, 20}, {Bob, 17}, {Cindy, 30}, }) adults : users.Filter(func(u User, _ int) bool { return u.Age 18 }) firstAdult : adults.First() // Alice技巧5Contains 判断存在ContainsCount 统计次数判断数组里有没有某个值一行的事fmt.Println(coll.Contains(3)) // true fmt.Println(coll.Contains(6)) // false fmt.Println(coll.ContainsCount(2)) // 22 出现了两次如果还需要定位下标用Search——找不到时返回 -1idx : coll.Search(3) // 2方法细节参见文档 docs/method/contains.md、docs/method/first.md。技巧6链式调用后检查 Err()collection 采用可链式 延迟报错设计出错不会中断调用链所以组合多个方法时记得在最后检查错误res : coll.Filter(func(v int, _ int) bool { return v 1 }). Reject(func(v int, _ int) bool { return v 3 }) if err : res.Err(); err ! nil { // 处理错误 }⚠️ 注意struct 类型没有内置比较函数若要对对象集合使用 Contains 等方法需先用SetCompare设置比较函数。 6个技巧速查表#方法适用场景1Filter保留满足条件的元素2Reject剔除满足条件的元素3First / Last安全获取首/尾元素防空集合4Filter First链式查找第一个满足条件的元素5Contains / ContainsCount / Search判断存在、统计次数、定位下标6Err()检查链式调用的延迟错误掌握这 6 个技巧日常 Go 业务开发中的数据筛选与查找基本就够了。更多方法GroupBy、SortBy、Union 等的完整用法可以在项目的 docs/method/ 目录下逐个查阅。【免费下载链接】collectiongo collection package for fasting coding项目地址: https://gitcode.com/gh_mirrors/collection6/collection创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表