當前位置: 首頁>>編程語言>>正文


Go語言教程:通道遍曆

返回Go語言教程首頁

概念簡介

前麵的例子中,我們講過 `for` 和 `range`
為基本的數據結構提供了迭代的功能。我們也可以使用這個語法來遍曆從通道中取得的值。

例程代碼


package main

import "fmt"

func main() {

    // 我們將遍曆在 `queue` 通道中的兩個值。
    queue := make(chan string, 2)
    queue <- "one"
    queue <- "two"
    close(queue)

    // 這個 `range` 迭代從 `queue` 中得到的每個值。因為我們
    // 在前麵 `close` 了這個通道,這個迭代會在接收完 2 個值
    // 之後結束。如果我們沒有 `close` 它,我們將在這個循環中
    // 繼續阻塞執行,等待接收第三個值
    for elem := range queue {
        fmt.Println(elem)
    }
}

執行&輸出


$ go run range-over-channels.go
one
two

# 這個例子也讓我們看到,一個非空的通道也是可以關閉的,
# 但是通道中剩下的值仍然可以被接收到。

課程導航

學習上一篇:Go語言教程:通道的關閉    學習下一篇:Go語言教程:定時器

相關資料

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/range-over-channels

Go語言通道遍曆

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4059.html,未經允許,請勿轉載。