Golang container/ring闭环数据结构的使用方法

 1 //引入包
 2 import "container/ring"
 3 //创建闭环,这里创建10个元素的闭环
 4 r := ring.New(10)
 5 //给闭环中的元素附值
 6 for i := 1; i <= r.Len(); i++ {
 7     r.Value = i
 8     r = r.Next()
 9 }
10 //循环打印闭环元素的值,这里的操作方法很像javascript
11 r.Do(func(p interface{}){
12     println(p)
13 })
14 //当前元素就是
15 // r
16 //当前元素的值就是
17 // r.Value       //这里是 1
18 //取得当前元素之后的第5个元素
19 r5 := r.Move(5)    //这里是 6
20 //链接 当前元素r与r5,相当于删除了r跟r5之间的元素,使 r.Next() == r5
21 rl := r.Link(r5)  //这样 r环里有 1 6 7 8 9 10
22                     //rl 环路里有  2 3 4 5 
23  
24 //把rl环加回到 r环原来的位置
25 //要确保r的当前位置是 1,rl的当前位置为2
26 rf := r.Link(rl)
27 //这样 r就变回了 1 2 3 4 5 6 7 8 9 10
28 //rf则是 从 rl.Next()开始环,内容则与 r的一样。
29 //6 7 8 9 10 1 2 3 4 5
30 另外做过一次 Do()循环操作后 闭环的当前位置不变。
原文地址:https://www.cnblogs.com/toby/p/golang-container-ring-usage.html