Вопрос: Как написать собственный итератор в стиле range (через канал) и какие минусы?

Go Junior Без компании
Вопрос: Как написать собственный итератор в стиле range (через канал) и какие минусы?
Ответы
До появления "range over func" (если его нет в вашей версии), часто делают итератор как канал. Минусы: горутины, аллокации, сложнее отмена. ```go package main import "fmt" func Iter(n int) <-chan int { out := make(chan int) go func() { defer close(out) for i := 0; i < n; i++ { out <- i } }() return out } func main() { for v := range Iter(3) { fmt.Println(v) } } ```