在线文档教程

容器数据结构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

包文件

ring.go

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 不能为空。