Sobes.tech
Junior — Middle

Hányszor kell bezárni egy csatornát Go-ban a hibák elkerülése érdekében?

sobes.tech MI

Válasz az MI-től

Go nyelven egy csatornát pontosan egyszer kell bezárni, amikor már nem tervezi több adat küldését rá. A csatorna többszöri bezárása pánikhoz (runtime panic) vezet.

Fontos:

  • Aki ír a csatornába, annak kell bezárnia, nem annak, aki olvas.
  • Ha a csatornát goroutine-ok közötti adatátvitelre használják, a bezárás jelzi, hogy több adat nem lesz.

Példa:

ch := make(chan int)
func() {
    defer close(ch) // egyszer zárjuk be a csatornát
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

Ebben a példában a csatornát egyszer zárják be, miután minden értéket elküldtek.