github.com/mymmsc/gox@v1.3.33/util/examples/iteratorwithindex/iteratorwithindex.go (about)

     1  // Copyright (c) 2015, Emir Pasic. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import (
     8  	"fmt"
     9  	"github.com/mymmsc/gox/util/treeset"
    10  )
    11  
    12  // IteratorWithIndexExample to demonstrate basic usage of IteratorWithIndex
    13  func main() {
    14  	set := treeset.NewWithStringComparator()
    15  	set.Add("a", "b", "c")
    16  	it := set.Iterator()
    17  
    18  	fmt.Print("\nForward iteration\n")
    19  	for it.Next() {
    20  		index, value := it.Index(), it.Value()
    21  		fmt.Print("[", index, ":", value, "]") // [0:a][1:b][2:c]
    22  	}
    23  
    24  	fmt.Print("\nForward iteration (again)\n")
    25  	for it.Begin(); it.Next(); {
    26  		index, value := it.Index(), it.Value()
    27  		fmt.Print("[", index, ":", value, "]") // [0:a][1:b][2:c]
    28  	}
    29  
    30  	fmt.Print("\nBackward iteration\n")
    31  	for it.Prev() {
    32  		index, value := it.Index(), it.Value()
    33  		fmt.Print("[", index, ":", value, "]") // [2:c][1:b][0:a]
    34  	}
    35  
    36  	fmt.Print("\nBackward iteration (again)\n")
    37  	for it.End(); it.Prev(); {
    38  		index, value := it.Index(), it.Value()
    39  		fmt.Print("[", index, ":", value, "]") // [2:c][1:b][0:a]
    40  	}
    41  
    42  	if it.First() {
    43  		fmt.Print("\nFirst index: ", it.Index()) // First index: 0
    44  		fmt.Print("\nFirst value: ", it.Value()) // First value: a
    45  	}
    46  
    47  	if it.Last() {
    48  		fmt.Print("\nLast index: ", it.Index()) // Last index: 3
    49  		fmt.Print("\nLast value: ", it.Value()) // Last value: c
    50  	}
    51  }