• Задача
  • Решение
  • Обсуждение

Pipeline: generate → square → sum

Три стадии конвейера, каждая «канал в, канал наружу». Реализуйте generate, square и sum.

GolangРешение
func generate(nums ...int) <-chan int {
	out := make(chan int)
	go func() {
		for _, n := range nums {
			out <- n
		}
		close(out)
	}()
	return out
}

func square(in <-chan int) <-chan int {
	out := make(chan int)
	go func() {
		for n := range in {
			out <- n * n
		}
		close(out)
	}()
	return out
}

func sum(in <-chan int) int {
	total := 0
	for n := range in {
		total += n
	}
	return total
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки