基本介绍
集合,即不可重复的一组元素,元素项可以为任意类型。
同时, gset 支持可选的并发安全参数选项,支持并发安全的场景。
使用场景:
集合操作。
使用方式:
import "github.com/gogf/gf/v2/container/gset"
接口文档: https://pkg.go.dev/github.com/gogf/gf/v2/container/gset
NilChecker 与 typed nil 支持
- 功能简介:在泛型版本中,
gset为泛型集合类型TSet[T]提供了NilChecker函数,用于自定义“哪些元素应当被视为 nil”,以便在包含指针、接口等类型时更精确地处理 typed nil 场景。 - 使用方式:可以通过
NewTSetWithChecker、NewTSetWithCheckerFrom创建集合,或在运行时调用RegisterNilChecker注册一个func(T) bool判定函数,懒加载/条件写入方法(如AddIfNotExist*系列)在真正写入前会先调用该函数,当判定为 nil 时通常不会将该元素加入集合。 - 兼容性:如果未设置
NilChecker,则保持与历史版本一致,默认使用any(v) == nil进行判定,typed nil 的行为不会发生变化。
示例:
type Student struct {
Name string
}
// 将 *Student(nil) 视为“无效元素”,不会加入集合
set := gset.NewTSetWithChecker[*Student](func(s *Student) bool {
return s == nil
}, true)
ok := set.AddIfNotExist(nil)
fmt.Println(ok) // false
fmt.Println(set.Size()) // 0
相关文档
📄️ 集合类型-基本使用
在GoFrame框架中使用集合类型及其基本操作方法,包括集合的创建、添加、删除、遍历等,并探讨了交集、差集、并集、补集等高级操作。此外,文章还详细解释了包含判断、集合项出栈、子集判断、判断性写入等功能,并以代码示例展示了如何进行JSON序列化和反序列化处理。
📄️ 集合类型-性能测试
在GoFrame框架中集合类型的性能测试结果,包含各种数据类型如整数、任意数据类型和字符串的集合操作的基准测试。这些基准测试展示了不同集合操作的性能指标,帮助开发者优化代码性能并在使用GoFrame框架构建高效应用时提高效率。
📄️ 集合类型-方法介绍
利用GoFrame库实现集合类型的基本操作方法,包括创建集合、新增元素、集合运算、元素检查与删除、集合迭代等多种功能,还提供了具体的代码示例以帮助理解和应用这些方法。