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

不強制啓動一個協程,先寫入數據之後,後續程序慢慢讀取。

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