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