package main import ( "fmt" "os" "time" ) func launch() { fmt.Println("To abort launch press Enter") for i:=10;i >=0; i-- { fmt.Printf("%d...\n",i) } } func main() { abort := make(chan struct{}) go func() { os.Stdin.Read(make([]byte,1)) abort <- struct{}{} }() tick := time.Tick(1*time.Second) for i:=10; i>=0; i-- { fmt.Printf("%d...\n",i) select { case <-tick: case <- abort: fmt.Println("Launch cancelled") return } } }