29 lines
736 B
Go
29 lines
736 B
Go
package gomap
|
|
|
|
// The Iterator is a small struct
|
|
// used for handling iterator-like usage.
|
|
// Go itself does not support the while loop,
|
|
// however, we can achieve similar usage recursively.
|
|
type Iterator struct {
|
|
// The elements.
|
|
elements []interface{}
|
|
// The current index.
|
|
current int
|
|
// The current value.
|
|
Value interface{}
|
|
}
|
|
|
|
// Next gets the next value in the iterator
|
|
func (it *Iterator) Next() (bool, interface{}) {
|
|
// If there are no more values left, return false and nothing.
|
|
if len(it.elements) <= it.current+1 {
|
|
return false, nil
|
|
}
|
|
// Upgrade the current index.
|
|
it.current = it.current + 1
|
|
// Set the current value.
|
|
it.Value = it.elements[it.current]
|
|
// Return true, and the value.
|
|
return true, it.Value
|
|
}
|