Go的for range除了遍歷陣列、slice或map的元素,也可用來來逐個取得channel中的資料。
例如下面用range for loop讀取Channel c
裡面的資料。
main.go
package main
import (
"fmt"
)
func main() {
data := []int{1, 2, 3, 4, 5}
c := make(chan int)
go func(data []int, c chan int) {
for _, e := range data {
c <- e // put data elements into channel
}
close(c) // close the channel after all data sent to the channel
}(data, c)
for i := range c { // receive channel data
fmt.Println(i)
}
}
這樣的效果像是一個簡單的pipeline。
沒有留言:
張貼留言