1. Задача: Объединение нескольких каналов
package main
func merge(chs ...chan int) chan int {
// TODO: implement
}
func main() {
ch1 := startProducerA()
ch2 := startProducerB()
for el := range merge(ch1, ch2) {
println(el)
}
}2. Задача: Sleep с прерыванием через контекст
package main
import (
"context"
"log"
"time"
)
// Sleep is interruptible verion of time.Sleep.
// Returns false if context was cancelled,
func Sleep(context.Context, time.Duration) bool {
// TODO: implement
return false
}
func main() {
ctx, _ := context.WithTimeout(context.Background(), time.Millisecond)
if !Sleep(ctx, time.Second) {
log.Print("interrupted")
}
}Задача 3
Graceful Shutdown
В сервисах на golang в секции…