Sobes.tech
Senior

Mi történik, ha egy zárt csatornából olvasunk Go-ban?

sobes.tech MI

Válasz az MI-től

Amikor egy zárt csatornából olvasunk Go-ban, a következő történik:

  • Ha vannak adatok a csatornában, azokat normál módon olvassa.
  • Ha a csatorna zárt és nincs adat, az olvasási művelet a csatortípus null értékét és false-t ad vissza a második értékben (ha két értéket visszaadó formát használunk).

Példa:

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

v, ok := <-ch
fmt.Println(v, ok) // Kiírja: 0 false

Ez lehetővé teszi annak felismerését, hogy a csatorna zárt, és több adat nem lesz. Zárt csatornából olvasva, adat nélkül, a gorutina nem blokkol, hanem azonnal megkapja a null értéket.

Ha zárt csatornából olvasunk anélkül, hogy ellenőriznénk a második értéket, null értékeket kaphatunk, ami fontos szempont a feldolgozó logikában.