ring
最后更新于:2022-04-02 02:42:40
[TOC]
## ring
环的尾部就是头部,环还提供一个Do方法,能便利一遍环,对每个元素执行一个function
```
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 // 指针从当前元素开始向后移动或者向前(n可以为负数)
func (r *Ring) Next() *Ring // 当前元素的下个元素
func (r *Ring) Prev() *Ring // 当前元素的上个元素
func (r *Ring) Unlink(n int) *Ring // 从当前元素开始,删除n个元素
```
### demo
```
r := ring.New(4)
n := r.Len()
for i := 0; i < n; i++ {
r.Value = i //复制
r = r.Next() //
}
//r = r.Unlink(4)
r.Do(func(p interface{}) {
fmt.Println(p)
})
```
';