Даны три канала с приоритетами high, mid, low. Нужна функция, которая всегда первым читает канал с наивысшим приоритетом, если там есть данные; иначе проверяет средний и только потом низкий. Работает, пока не закрыты все три канала. Также нужно написать генератор feed: он кладёт значения в канал с заданной задержкой и закрывает канал.
1package main2 3import (4 "fmt"5 "sync"6 "time"7)8 9func feed(c chan int, vals []int, delay time.Duration, grp *sync.WaitGroup) {10 11}12 13func fanInByPriority(hi, mid, lo chan int) {14 // your code here15}16 17func main() {18 hi := make(chan int)19 mid := make(chan int)20 lo := make(chan int)21 22 var grp sync.WaitGroup23 24 grp.Add(3)25 go feed(hi, []int{1, 2, 3}, 500*time.Millisecond, &grp)26 go feed(mid, []int{10, 11, 12}, 1*time.Second, &grp)27 go feed(lo, []int{100, 101, 102}, 2*time.Second, &grp)28 29 fanInByPriority(hi, mid, lo)30 31 grp.Wait()32}