本文主要介绍如何在golang中迭代channel和array。
range循环切片
1 2 3
| for key, index := range []int{1, 2, 3} { fmt.Printf("key = %d, index = %d\n", key, index) }
|
range循环channel
当channel关闭时自动退出循环
1 2 3
| for c := range ch1 { fmt.Printf("c: %v\n", c) }
|
通道取值
1 2 3 4 5 6 7 8 9 10 11
| for { data1, ok := <-ch1 if !ok { break } data2, ok := <-ch2 if !ok { break } fmt.Printf("data1: %v, data2: %v\n", data1, data2) }
|
select多路复用
1 2 3 4 5 6 7 8 9 10 11
| for { select { case data := <-ch1: { fmt.Printf("data: %v\n", data) } case <-ch2: default: time.Sleep(time.Second) } }
|