Junior — Middle
What consequences can arise if the channel remains open and is not closed in the program?
sobes.tech AI
Answer from AI
If a channel in Go remains open and is not closed, the following consequences may occur:
- Goroutine blocking: if the receiver is waiting for the channel to close to finish its work, it may hang forever.
- Resource leaks: goroutines waiting to read from the channel may not terminate, leading to memory leaks.
- Unpredictable program behavior: logic that depends on the channel being closed (for example, ending a
for rangeloop) will not work.
It is important to close the channel when no more data will be sent, so that receivers can correctly handle the end of transmission.
ch := make(chan int)
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Close the channel after sending all data
}()
for val := range ch {
fmt.Println(val)
}