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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章