123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- // Copyright 2017 The Go Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package ring_test
- import (
- "container/ring"
- "fmt"
- )
- func ExampleRing_Len() {
- // Create a new ring of size 4
- r := ring.New(4)
- // Print out its length
- fmt.Println(r.Len())
- // Output:
- // 4
- }
- func ExampleRing_Next() {
- // Create a new ring of size 5
- r := ring.New(5)
- // Get the length of the ring
- n := r.Len()
- // Initialize the ring with some integer values
- for i := 0; i < n; i++ {
- r.Value = i
- r = r.Next()
- }
- // Iterate through the ring and print its contents
- for j := 0; j < n; j++ {
- fmt.Println(r.Value)
- r = r.Next()
- }
- // Output:
- // 0
- // 1
- // 2
- // 3
- // 4
- }
- func ExampleRing_Prev() {
- // Create a new ring of size 5
- r := ring.New(5)
- // Get the length of the ring
- n := r.Len()
- // Initialize the ring with some integer values
- for i := 0; i < n; i++ {
- r.Value = i
- r = r.Next()
- }
- // Iterate through the ring backwards and print its contents
- for j := 0; j < n; j++ {
- r = r.Prev()
- fmt.Println(r.Value)
- }
- // Output:
- // 4
- // 3
- // 2
- // 1
- // 0
- }
- func ExampleRing_Do() {
- // Create a new ring of size 5
- r := ring.New(5)
- // Get the length of the ring
- n := r.Len()
- // Initialize the ring with some integer values
- for i := 0; i < n; i++ {
- r.Value = i
- r = r.Next()
- }
- // Iterate through the ring and print its contents
- r.Do(func(p any) {
- fmt.Println(p.(int))
- })
- // Output:
- // 0
- // 1
- // 2
- // 3
- // 4
- }
- func ExampleRing_Move() {
- // Create a new ring of size 5
- r := ring.New(5)
- // Get the length of the ring
- n := r.Len()
- // Initialize the ring with some integer values
- for i := 0; i < n; i++ {
- r.Value = i
- r = r.Next()
- }
- // Move the pointer forward by three steps
- r = r.Move(3)
- // Iterate through the ring and print its contents
- r.Do(func(p any) {
- fmt.Println(p.(int))
- })
- // Output:
- // 3
- // 4
- // 0
- // 1
- // 2
- }
- func ExampleRing_Link() {
- // Create two rings, r and s, of size 2
- r := ring.New(2)
- s := ring.New(2)
- // Get the length of the ring
- lr := r.Len()
- ls := s.Len()
- // Initialize r with 0s
- for i := 0; i < lr; i++ {
- r.Value = 0
- r = r.Next()
- }
- // Initialize s with 1s
- for j := 0; j < ls; j++ {
- s.Value = 1
- s = s.Next()
- }
- // Link ring r and ring s
- rs := r.Link(s)
- // Iterate through the combined ring and print its contents
- rs.Do(func(p any) {
- fmt.Println(p.(int))
- })
- // Output:
- // 0
- // 0
- // 1
- // 1
- }
- func ExampleRing_Unlink() {
- // Create a new ring of size 6
- r := ring.New(6)
- // Get the length of the ring
- n := r.Len()
- // Initialize the ring with some integer values
- for i := 0; i < n; i++ {
- r.Value = i
- r = r.Next()
- }
- // Unlink three elements from r, starting from r.Next()
- r.Unlink(3)
- // Iterate through the remaining ring and print its contents
- r.Do(func(p any) {
- fmt.Println(p.(int))
- })
- // Output:
- // 0
- // 4
- // 5
- }
|