Golang ring.Link()函数及示例

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程