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
}