容器数据结构ring | container/ring
Package ring
import "container/ring"
- 概述
- 索引
概述
封装环在圆形列表上执行操作。
索引
- type Ring
- func New(n int) *Ring
- func (r *Ring) Do(f func(interface{}))
- func (r *Ring) Len() int
- func (r *Ring) Link(s *Ring) *Ring
- func (r *Ring) Move(n int) *Ring
- func (r *Ring) Next() *Ring
- func (r *Ring) Prev() *Ring
- func (r *Ring) Unlink(n int) *Ring
包文件
type Ring(查看源代码)
Ring是圆形列表或环的元素。Rings没有开始或结束;指向任何环形元素的指针用作整个环的参考。空环表示为零环指针。一个Ring的零值是一个无零值的单元素环。
type Ring struct {
Value interface{} // 供客户端使用;未受此库的影响
// 包含过滤或未导出的字段
}
func New(查看源代码)
func New(n int) *Ring
新创建了n个元素的环。
func (*Ring) Do(查看源代码)
func (r *Ring) Do(f func(interface{}))
按照正向顺序在环的每个元素上调用函数 f 。如果 f 更改 * r,Do 的行为是不确定的。
func (*Ring) Len(查看源代码)
func (r *Ring) Len() int
Len 计算环 r 中元素的数量。它在时间上与元素的数量成比例地执行。
func (*Ring) Link(查看源代码)
func (r *Ring) Link(s *Ring) *Ring
Link 将 ring 与 ring 连接起来,使 r.Next() 变为 s 并返回 r.Next() 的原始值。r 不能为空。
如果 r 和 s 指向同一个环,则链接它们会从环中删除 r 和 s 之间的元素。被删除的元素形成一个子环,结果是对该子环的引用(如果没有元素被删除,结果仍然是 r.Next() 的原始值,而不是 nil)。
如果 r 和 s 指向不同的环,则链接它们将创建一个单一的环,并在 r 之后插入 s 的元素。结果指向插入后 s 的最后一个元素之后的元素。
func (*Ring) Move(查看源代码)
func (r *Ring) Move(n int) *Ring
Move 在环中向后(n < 0)或向前(n >= 0)移动 n % r.Len()元素并返回该环元素。r 不能为空。
func (*Ring) Next(查看源代码)
func (r *Ring) Next() *Ring
接下来返回下一个环元素。r 不能为空。
func (*Ring) Prev(查看源代码)
func (r *Ring) Prev() *Ring
上一个返回前一个环元素。r 不能为空。
func (*Ring) Unlink(查看源代码)
func (r *Ring) Unlink(n int) *Ring
取消链接会从 r.Next() 开始,从 r 环中删除 n%r.Len() 元素。如果n % r.Len() == 0,则 r 保持不变。结果是被删除的子环。r 不能为空。