github.com/traefik/yaegi@v0.15.1/_test/select14.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 ) 7 8 const ( 9 period = 300 * time.Millisecond 10 precision = 30 * time.Millisecond 11 ) 12 13 func main() { 14 counter := 0 15 p := time.Now() 16 ticker := time.NewTicker(period) 17 ch := make(chan int) 18 19 go func() { 20 for i := 0; i < 3; i++ { 21 select { 22 case t := <-ticker.C: 23 counter = counter + 1 24 ch <- counter 25 if d := t.Sub(p) - period; d < -precision || d > precision { 26 fmt.Println("wrong delay", d) 27 } 28 p = t 29 } 30 } 31 ch <- 0 32 }() 33 for c := range ch { 34 if c == 0 { 35 break 36 } 37 println(c) 38 } 39 } 40 41 // Output: 42 // 1 43 // 2 44 // 3