例で 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

この例は、空でないチャネルを閉じるが、残りの値を受信できることも示しています。

次の例: タイマー