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