// +build ignore,OMIT package main import ( "fmt" "math/rand" "time" ) func init() { rand.Seed(10) } func sendMessages() chan string { ch := make(chan string) go func() { for i := 0; ; i++ { time.Sleep(time.Duration(rand.Intn(100)) * time.Millisecond) ch <- fmt.Sprintf("message %v", i) } }() return ch } func main() { timeout := time.NewTimer(80 * time.Millisecond) ch := sendMessages() for { select { case msg := <-ch: fmt.Println(msg) timeout.Reset(80 * time.Millisecond) case <-timeout.C: fmt.Println("timeout") return } } }