Go بالأمثلة: التكرار عبر القنوات (Range over Channels)

في مثال سابق رأينا كيف توفر 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).