

やりたいこと

  * 無限ループの中で`Enter`押下で1を出力する。
  * `CTRL`+`C`押下でプログラムを終了する

できないこと

  * `CTRL`+`C`を押下してもプログラムが終了しない

[code]

    package main
    
    import (
        "bufio"
        "fmt"
        "os"
        "os/signal"
        "syscall"
        "time"
    )
    
    func main() {
        sig := make(chan os.Signal)
        signal.Notify(sig, syscall.SIGINT)
        r := bufio.NewReader(os.Stdin)
        t := time.NewTicker(time.Duration(1) * time.Millisecond)
    loop:
        for {
            select {
            case <-sig:
                fmt.Println("sigint")
                break loop
            case <-t.C:
                r.ReadRune()
                fmt.Println(1)
            }
        }
    
        t.Stop()
    }
    
[/code]

こんな感じで書いてみたんですが、`CTRL`+`C`でプログラム終了が出来ません。  
Tickerの使い方もこれでいいのか・・・アドバイスお願いします。


CC BY-SA 3.0
2017-07-03T01:16:23.003
36051
2017-07-03T02:23:04.153
2017-07-03T02:23:04.153
21092
10022
question
go
TickerをCTRL+Cで止める正しいやり方が知りたい