Sobes.tech
Junior — Middle

Kde v kódu je třeba uzavřít kanál?

sobes.tech AI

Odpověď od AI

V Go by měl být kanál uzavřen na místě, kde je vytvořen, a kde již není plánováno odesílat data. Obvykle to dělá odesílatel, aby signalizoval příjemcům, že již nebudou žádná data.

Důležité:

  • Příjemci mohou při čtení zkontrolovat uzavření kanálu.
  • Kanál by měl uzavřít pouze odesílatel, aby se předešlo panice.

Příklad:

ch := make(chan int)
func() {
    defer close(ch) // uzavřeme kanál po odeslání všech dat
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // přijímáme data, dokud se kanál nezavře
}