Go之路(二十六):定时器

定时器

定时器一般配合Select使用,返回是一个管道

每次取一个值

package main

import(
	"fmt"
	"time"
)

func main()  {
	var a = make(chan int,5)
	var b = make(chan int,5)
	
	go func(){
		var i int
		for {
			a <- i
			time.Sleep(time.Second)
			b <- i*i
			time.Sleep(time.Second)
			i++
		}
	}()
	
	 t := time.NewTicker(time.Second)
	for{
		select{
		case v := <- a:
			fmt.Println(v)
		case v:= <- b:
			fmt.Println(v)
		case <-t.C:
			time.Sleep(time.Second)
			fmt.Println("?")
		}
		t.Stop()
	}
}

  一定要记得Stop否则会发生内存泄漏

posted @ 2018-12-08 20:38  __Miracle  阅读(125)  评论(0编辑  收藏  举报