ring golang
package main import ( "container/ring" "fmt" "time" ) func main() { coffee := []string{"kenya", "guatemala", "ethiopia"} // create a ring and populate it with some values r := ring.New(len(coffee)) for i := 0; i < r.Len(); i++ { r.Value = coffee[i] r = r.Next() } // print all values of the ring, easy done with ring.Do() r.Do(func(x interface{}) { fmt.Println(x) }) // .. or each one by one. for _ = range time.Tick(time.Second * 1) { r = r.Next() fmt.Println(r.Value) } }