Sobes.tech
Middle+

Kanalı kim bağlamalıdır - yazar mı yoxsa oxucu mu?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da, kanal yazıcı (sender) tərəfindən bağlanmalıdır, oxucu (receiver) tərəfindən deyil. Kanalın bağlanması, artıq dəyər göndərilməyəcəyini siqnal verir və oxucular, bağlanmış kanalı aşkar edərək düzgün şəkildə oxumağı sona çatdıra bilərlər.

Əgər oxucu kanalı bağlasa və yazıcı davam etsə, bu panik (panic) ilə nəticələnəcək. Buna görə, kanalın bağlanması məsuliyyəti onu yazan tərəfə aiddir.

Nümunə:

ch := make(chan int)
func() {
    defer close(ch) // yazıcı kanalı bağlayır
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // bağlanana qədər oxuyur
}