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()循环操作后 闭环的当前位置不变。