Sobes.tech
Senior

Kapalı bir kanalda okuma ve yazma sırasında ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da kanallarla çalışırken:

  • Kapanmış bir kanaldan okuma: Kanal kapandıysa ve içinde veri yoksa, okuma işlemi kanalın sıfır değerini ve ikinci dönüş değerinde false döner (kullanılıyorsa), bu da kanalın kapandığını gösterir.

  • Kapanmış bir kanala yazma: Kapanmış bir kanala yazmaya çalışmak panic ile sonuçlanır. Bu, çalışma zamanında bir hatadır.

Örnek:

ch := make(chan int)
close(ch)

// Okuma
v, ok := <-ch // ok == false, v == 0

// Yazma
ch <- 1 // panic: send on closed channel

Bu nedenle, kapatılmış bir kanaldan, içinde veri olduğu sürece güvenle okunabilir, ancak yazılamaz.