無緩衝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
不強制啓動一個協程,先寫入數據之後,後續程序慢慢讀取。