Junior — Middle
Колико пута треба затворити канал у Go-у да бисте избегли грешке?
sobes.tech АИ
Одговор од АИ
У 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)
}
У овом примеру, канал се затвара једном након што су сва вредност послате.