ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # ring ## 结构 ~~~ type Ring struct { Value interface{} // 供调用者使用,本包不会操作该字段 // 包含隐藏或非导出字段 } ~~~ Ring类型代表环形链表的一个元素,同时也代表链表本身。环形链表没有头尾;指向环形链表任一元素的指针都可以作为整个环形链表看待。Ring零值是具有一个(Value字段为nil的)元素的链表 ## 使用 ~~~ func printRing(r *ring.Ring) { r.Do(func(v interface{}) { fmt.Print(v.(int), " ") }) fmt.Println() } func main() { //创建环形链表 r := ring.New(5) //循环赋值 for i := 0; i < 5; i++ { r.Value = i //取得下一个元素 r = r.Next() } printRing(r) //环的长度 fmt.Println(r.Len()) //移动环的指针 r.Move(2) //从当前指针删除n个元素 r.Unlink(2) printRing(r) //连接两个环 r2 := ring.New(3) for i := 0; i < 3; i++ { r2.Value = i + 10 //取得下一个元素 r2 = r2.Next() } printRing(r2) r.Link(r2) printRing(r) } ~~~