Вопрос: Как закрывать канал и как корректно читать из закрытого канала?
Go
Junior
Без компании
Вопрос: Как закрывать канал и как корректно читать из закрытого канала?
Ответы
close(ch) закрывает канал для отправки. Чтение из закрытого канала возвращает оставшиеся значения, затем zero value и ok=false.
```go
package main
import "fmt"
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch)
for {
v, ok := <-ch
if !ok {
break
}
fmt.Println(v)
}
}
```
Закрывает канал только отправитель (тот, кто больше не будет слать).