寫一個程序, 5s, 10s后能定時執行一個任務,同時能不停的處理來的消息。
-------------------------------------------------------------------------------------------------
package main import ( "fmt" "time" ) func main() { input := make(chan interface{}) //producer - produce the messages go func() { for i := 0; i < 5; i++ { input <- i } input <- "hello, world" }() t1 := time.NewTimer(time.Second * 5) t2 := time.NewTimer(time.Second * 10) for { select { //consumer - consume the messages case msg := <-input: fmt.Println(msg) case <-t1.C: println("5s timer") t1.Reset(time.Second * 5) case <-t2.C: println("10s timer") t2.Reset(time.Second * 10) } } }
寫出上面這段程序的目的是從 input channel 持續接收消息加以處理,同時希望每過5秒鍾和每過10秒鍾就分別執行一個定時任務