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.