Sobes.tech
Junior — Middle

Na kojem mestu u kodu je potrebno zatvoriti kanal?

sobes.tech АИ

Одговор од АИ

У Го, канал треба затворити на месту где је креиран и где се више не планира слати податке. Обично то ради пошиљалац да би сигнализирао примаоцима да више података неће бити.

Важно:

  • Примачи могу проверити затварање канала приликом читања.
  • Само пошиљалац треба да затвори канал како би избегли панике.

Пример:

ch := make(chan int)
func() {
    defer close(ch) // затварамо канал након слања свих података
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // добијамо податке док се канал не затвори
}