Вопрос: Как сделать контекст-отменяемый generator, чтобы не было утечек?

Go Middle Без компании
Вопрос: Как сделать контекст-отменяемый generator, чтобы не было утечек?
Ответы
```go func genCtx(ctx context.Context) <-chan int { out := make(chan int) go func() { defer close(out) for i := 0; ; i++ { select { case <-ctx.Done(): return case out <- i: } } }() return out } ``` **Как это работает:** producer проверяет `ctx.Done()` и выходит, если consumer больше не нуждается в данных.