golang中迭代channel和array

本文主要介绍如何在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)
}
}