вторник, 15 октября 2019 г.

Паттерны в Golang: Generator

Паттерн Generator используется для вывода последовательности значений по одному за раз.

Реализация

func Count(start int, end int) chan int {
    ch := make(chan int)

    go func(ch chan int) {
        for i := start; i <= end ; i++ {
            // Блокирует операцию
            ch <- i
        }

    close(ch)
  }(ch)

  return ch
}

Использование

fmt.Println("Нет бутылок пива на стене")

for i := range Count(1, 99) {
 fmt.Println("Передай эту, поставь ее,", i, "бутылок пива на стене")
 // Передай эту, поставь ее, 1 бутылок пива на стене
 // Передай эту, поставь ее, 2 бутылок пива на стене
 // ...
 // Передай эту, поставь ее, 99 бутылок пива на стене
}

fmt.Println(100, "бутылок пива на стене")

В песочнице play.golang.org


Читайте также:


Комментариев нет:

Отправить комментарий