Go通道範圍實例

在前面的例子中,我們已經看到了forrange語句如何爲基本數據結構提供迭代。還可以使用此語法對從通道接收的值進行迭代。

此範圍在從隊列接收到的每個元素上進行迭代。因爲關閉了上面的通道,迭代在接收到2個元素後終止。

這個示例還示出可以關閉非空信道,但仍然接收剩餘值。

所有的示例代碼,都放在 F:\worksp\golang 目錄下。安裝Go編程環境請參考:http://www.yiibai.com/go/go\_environment.html

range-over-channels.go的完整代碼如下所示 -

package main

import "fmt"

func main() {

    // We'll iterate over 2 values in the `queue` channel.
    queue := make(chan string, 2)
    queue <- "one"
    queue <- "two"
    close(queue)

    // This `range` iterates over each element as it's
    // received from `queue`. Because we `close`d the
    // channel above, the iteration terminates after
    // receiving the 2 elements.
    for elem := range queue {
        fmt.Println(elem)
    }
}

執行上面代碼,將得到以下輸出結果 -

F:\worksp\golang>go run range-over-channels.go
one
two