Sobes.tech
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)
}

У овом примеру, канал се затвара једном након што су сва вредност послате.