[Go]select监听channel


一、select的使用

select监听channel上的数据流动方向
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、select实现fibonacci(斐波那契)数列

规律:x=y y=x+y (x,y从1开始)

package main

import (
	"fmt"
	"runtime"
)

func fibonacci(ch <-chan int, quit <-chan bool) {
	for {
		select {
		case num := <-ch:
			fmt.Print(num, " ")
		case <-quit:
			runtime.Goexit()
		}
	}

}

func main() {
	ch := make(chan int)
	quit := make(chan bool)

	go fibonacci(ch, quit) //打印数字,

	x, y := 1, 1
	for i := 0; i < 20; i++ {
		ch <- x
		x, y = y, x+y
	}
	quit <- true
}

三、数列select超时

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


版权声明:本文为lakdlfkasdf原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。