Junior — Middle
В кое място в кода трябва да затворите канала?
sobes.tech AI
Отговор от AI
В Go каналът трябва да бъде затворен там, където е създаден и където вече не се планира изпращане на данни. Обикновено това прави изпращачът, за да сигнализира на получателите, че повече данни няма да има.
Важно:
- Получателите могат да проверяват затварянето на канала при четене.
- Само изпращачът трябва да затваря канала, за да избегне паника.
Пример:
ch := make(chan int)
func() {
defer close(ch) // затваряме канала след изпращане на всички данни
for i := 0; i < 5; i++ {
ch <- i
}
}()
for val := range ch {
fmt.Println(val) // получаваме данни, докато каналът не се затвори
}