Golang container/ring.Ring.Link() function example

package container/ring

See http://golang.org/pkg/container/ring/#Ring.Link description for further explanation how Link works.

Golang container/ring.Ring.Link() function usage example

 package main

 import (
 "container/ring"
 "fmt"
 )

 func main() {

  r := ring.New(10)

  // populate our ring
  for i := 0; i < 10; i++ {
 r.Value = i
 r = r.Next()
  }

  r2 := ring.New(10)

  // populate our ring
  for t := 0; t < 10; t++ {
 r2.Value = t
 r2 = r2.Next()
  }

  f := func(v interface{}) {
 fmt.Printf("%d ", v)
 }

  // Values in r before link
  fmt.Println("Values in r BEFORE link")
  r.Do(f)
  fmt.Println()

  r.Link(r2)


  // Values in r AFTER link
  fmt.Println("Values in r AFTER link")
  r.Do(f)
  fmt.Println()

 }

Output :

Values in r BEFORE link

0 1 2 3 4 5 6 7 8 9

Values in r AFTER link

0 0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9

Reference :

http://golang.org/pkg/container/ring/#Ring.Link

Advertisement