Documentation
¶
Overview ¶
Package reddot 提供小红点 / 未读聚合树:把散落各处的未读数按树形层级聚合, 父节点的未读 = 所有子节点未读之和,叶子清零自动向上传播。纯内存、并发安全。
解决的问题:App"我的"页那个红点,往往由 N 个来源汇总而来——未读消息 + 好友申请 + 活动红点 + 系统通知……手写"某处清零后重算所有祖先"极易漏更或算错。reddot 用 一棵树建模:业务只在叶子上 Set/Clear/Incr,任意节点的聚合未读实时可查,清零沿 父链自动更新。
模型:节点用路径式 ID 组织成树(如 "me/msg/chat")。分两类:
- 叶子:直接持有未读计数(业务设置);
- 内部节点:计数 = 所有后代叶子之和(自动聚合,不可直接设置)。
两种未读语义:Count(精确数字,"99+")与 Dot(仅有无红点,布尔)。父节点 Count = 子叶之和,Dot = 任一后代有未读。
树结构在首次访问路径时惰性创建。并发安全(单锁,红点树规模通常很小)。 零值不可用,用 New 构造。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(*Tree)
Option 配置 Tree。
func WithSeparator ¶
WithSeparator 设置路径分隔符(默认 "/")。如 "me/msg/chat"。
type Tree ¶
type Tree struct {
// contains filtered or unexported fields
}
Tree 小红点聚合树。零值不可用,用 New 构造。并发安全。
Click to show internal directories.
Click to hide internal directories.