透過範例了解 Go:通道範圍

先前 範例中,我們看過 forrange 如何提供基礎資料結構的迭代。我們可以使用此語法迭代從通道接收的值。

package main
import "fmt"
func main() {

我們會在 queue 通道內迭代 2 個值。

    queue := make(chan string, 2)
    queue <- "one"
    queue <- "two"
    close(queue)

range 會在從 queue 收到每個元素時迭代。由於我們先前 close 了通道,因此在收到 2 個元素後,迭代會終止。

    for elem := range queue {
        fmt.Println(elem)
    }
}
$ go run range-over-channels.go
one
two

此範例也顯示,有可能 close 非空通道,但依然會收到剩餘的值。

下一範例:計時器