iter
1 迭代器说明
1.1 迭代器本质
type Seq[V any] func(yield func(V) bool)
type Seq2[K, V any] func(yield func(K, V) bool)1.2 控制流机制
1.3 安全变异模式
// 1. 定义位置类型
type Pos[V any] struct {
node *TreeNode[V]
}
// 2. 实现变异方法
func (p *Pos[V]) Delete() {
removeNode(p.node)
}
// 3. 提供位置迭代器
func (t *Tree[V]) Positions() iter.Seq[*Pos[V]] {
return func(yield func(*Pos[V]) bool) {
traverse(t.root, func(n *TreeNode[V]) bool {
return yield(&Pos{node: n})
})
}
}
// 4. 使用
for p := range tree.Positions() {
if p.Value() < threshold {
p.Delete() // 安全变异
}
}1.4 总结
2 序列
2.1 Seq[T] 类型

2.2 Seq2[T1, T2] 类型
2.3 总结
3 工具函数
3.1 Pull:手动控制迭代
3.2 Pull2:二元组版本
3.2.1 数据库分页查询
3.3 资源清理
3.4 Next函数行为
3.5 yield函数行为
3.5.1 持久连接模式
3.5.2 事件驱动模式
3.5.3 状态恢复模式
3.6 设计选择指南
3.7 总结
最后更新于