Вопрос: Как использовать `context` для отмены чтения больших файлов?
Go
Middle
Без компании
Вопрос: Как использовать `context` для отмены чтения больших файлов?
Ответы
```go
func readBig(ctx context.Context, r io.Reader) error {
buf := make([]byte, 32*1024)
for {
select {
case <-ctx.Done():
return ctx.Err()
default:
n, err := r.Read(buf)
_ = n
if err == io.EOF { return nil }
if err != nil { return err }
}
}
}
```
**Как это работает:** чтение из Reader нельзя отменить напрямую, но можно периодически проверять `ctx.Done()` между чтениями.