Middle+
Kanalı kim kapamalı - yazar mı yoksa okuyucu mu?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da, kanalın kapatılması gönderen (sender) tarafından yapılmalı, alıcı (receiver) tarafından değil. Kanalın kapatılması, artık değer gönderilmeyeceğini sinyal eder ve okuyucular, kapatıldığını fark ederek doğru şekilde okumayı sonlandırabilir.
Eğer okuyucu kanalı kapatırsa ve gönderen devam edip göndermeye çalışırsa, bu bir panic'e yol açar. Bu nedenle, kanalın kapatılmasından sorumlu olan taraf, onu yazan taraftır.
Örnek:
ch := make(chan int)
func() {
defer close(ch) // gönderen kanalını kapatır
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // kapatılana kadar okur
}