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
}