Я пытаюсь приостановить и возобновить раствор. Я понимаю, что могу sleep
пробежать, но я ищу скорее кнопку «пауза / возобновление», чем таймер.
Вот моя попытка. Я использую функцию блокировки канала для паузы и select
для переключения того, что выполнять, в зависимости от значения канала. Однако в моем случае результат всегда Running
.
func main() {
ctx := wctx{}
go func(ctx wctx) {
for {
time.Sleep(1 * time.Second)
select {
case <-ctx.pause:
fmt.Print("Paused")
<-ctx.pause
case <-ctx.resume:
fmt.Print("Resumed")
default:
fmt.Print("Running \n")
}
}
}(ctx)
ctx.pause <- struct{}{}
ctx.resume <- struct{}{}
}
type wctx struct {
pause chan struct{}
resume chan struct{}
}