في مثال سابق رأينا كيف توفر for و range التكرار عبر هياكل البيانات الأساسية. يمكننا أيضاً استخدام هذه الصيغة للتكرار عبر القيم المستلمة من قناة.
package main
import "fmt"
func main() {
سنقوم بالتكرار عبر قيمتين في قناة queue.
queue := make(chan string, 2)
queue <- "واحد"
queue <- "اثنان"
close(queue)
هذا الـ range يتكرر عبر كل عنصر فور استلامه من queue. لأننا أغلقنا القناة أعلاه، ينتهي التكرار بعد استلام العنصرين.
for elem := range queue {
fmt.Println(elem)
}
}
تشغيل البرنامج:
$ go run range-over-channels.go
واحد
اثنان
أظهر هذا المثال أيضاً أنه من الممكن إغلاق قناة غير فارغة ومع ذلك يتم استلام القيم المتبقية منها.
المثال التالي: المؤقتات (Timers).