Sobes.tech
Senior

Ce se întâmplă la citirea și scrierea într-un canal închis?

sobes.tech AI

Răspuns de la AI

În Go, atunci când lucrați cu canale:

  • Citirea dintr-un canal închis: Dacă canalul este închis și nu are date, operația de citire returnează valoarea zero a tipului canalului și false în al doilea rezultat (dacă este utilizat), ceea ce indică faptul că canalul este închis.

  • Scrierea într-un canal închis: Încercarea de a scrie într-un canal închis duce la o panică (panic). Acesta este o eroare la timpul de execuție.

Exemplu:

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

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

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

Prin urmare, un canal închis poate fi citit în siguranță atâta timp cât are date, dar nu se poate scrie în el.