Golang ring.Link()函数及示例
ring.Link() 函数用于连接两个ring,即ring r和ring s。ring.next()函数将ring r的最后一个节点连接到ring s的第一个节点,以确保r.next()不为空,否则将抛出错误。它的工作原理类似于循环链表。
语法:
func (r *Ring) Link(s *Ring) *Ring
它不返回任何内容。
示例1:
// Golang程序演示
// ring.Link()函数
package main
import (
"container/ring"
"fmt"
)
// Main函数
func main() {
// 创建大小为2的两个ring,a和b
a := ring.New(4)
b := ring.New(4)
// 获取ring的长度
m := a.Len()
n := b.Len()
// 用0初始化a
for j := 0; j < m; j++ {
a.Value = 0
a = a.Next()
}
// 用1初始化b
for i := 0; i < n; i++ {
b.Value = 1
b = b.Next()
}
// 链接ring a和ring b
ab := a.Link(b)
ab.Do(func(p interface{}) {
fmt.Println(p.(int))
})
}
输出:
0
0
0
0
1
1
1
1
示例2:
// Golang程序演示
// ring.Link()函数
package main
import (
"container/ring"
"fmt"
)
// Main函数
func main() {
// 创建大小为2的两个ring,r和s
r := ring.New(2)
s := ring.New(2)
// 获取ring的长度
lr := r.Len()
ls := s.Len()
// 用"GFG"初始化r
for i := 0; i < lr; i++ {
r.Value = "GFG"
r = r.Next()
}
// 用"COURSE"初始化s
for j := 0; j < ls; j++ {
s.Value = "COURSE"
s = s.Next()
}
// 链接ring r和ring s
rs := r.Link(s)
// 遍历组合的ring并打印其内容
rs.Do(func(p interface{}) {
fmt.Println(p.(string))
})
}
输出:
GFG
GFG
COURSE
COURSE