Skip to content

Latest commit

 

History

History
55 lines (46 loc) · 687 Bytes

File metadata and controls

55 lines (46 loc) · 687 Bytes

Вопрос:

func Squares(c, quit chan int) {
  // ???
}

func main() {
  mychannel := make(chan int)
  quitchannel := make(chan int)
  sum := 0

  go func() {
    for i := 1; i <= 5; i++ {
      // ???
    }
    fmt.Println(sum)
    // ???
  }()

  Squares(mychannel, quitchannel)
}

Ответ:

func Squares(c, quit chan int) {
	for {
		select {
		case <-quit:
			return
		case i := <-c:
			c <- i * i
		}
	}
}

func main() {
	mychannel := make(chan int)
	quitchannel := make(chan int)
	sum := 0

	go func() {
		for i := 1; i <= 5; i++ {
			mychannel <- i
			sum += <-mychannel
		}
		fmt.Println(sum)
		close(quitchannel)
	}()

	Squares(mychannel, quitchannel)
}