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
falsedöner (kullanılıyorsa), bu da kanalın kapandığını gösterir. -
Kapanmış bir kanala yazma: Kapanmış bir kanala yazmaya çalışmak
panicile 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.