golang 有缓冲channel和无缓冲channel

无缓冲channel

chan无人接收会一直阻塞。

func Echo(nums []int) <-chan int {
	out := make(chan int)
     // 这里一定要启动一个协程,不然会panic go func() { for _, n := range nums { out <- n } close(out) }() return out }
func TestEcho(t *testing.T) {
	nums := []int{1, 2, 3, 4}
	out := Echo(nums)
	for v := range out {
		fmt.Printf("%d", v)
	}
}

 

有缓冲chan

不强制启动一个协程,先写入数据之后,后续程序慢慢读取。

posted @ 2021-06-09 15:14  zqlucky  阅读(229)  评论(0编辑  收藏  举报