mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			196 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
| // 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.
 | |
| 
 | |
| // +build ignore
 | |
| 
 | |
| 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 interface{}) {
 | |
| 		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 interface{}) {
 | |
| 		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 interface{}) {
 | |
| 		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 interface{}) {
 | |
| 		fmt.Println(p.(int))
 | |
| 	})
 | |
| 
 | |
| 	// Output:
 | |
| 	// 0
 | |
| 	// 4
 | |
| 	// 5
 | |
| }
 |