AdSense

網頁

2022/9/18

Golang range for channel

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。


沒有留言:

AdSense