Go参考手册
容器 | container
容器数据结构ring | container/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 不能为空。
容器 | container相关

Go 是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。
主页 | https://golang.org/ |
源码 | https://go.googlesource.com/go |
发布版本 | 1.9.2 |