package main // github.com/psilva261/timsort type iter struct { a []int index int } func (it *iter) Next() int { it.index ++ return it.a[it.index] } func newIter(a []int) *iter { return &iter{a:a, index: -1} } func (it *iter) Has() bool { return it.index < len(it.a) - 1 } func main() { it := newIter([]int{1, 2, 3}) for it.Has() { println(it.Next()) } }