Пишу консольное приложение Quiz (тест) в цикле вывожу вопросы и возможные варианты ответа, нужно реализовать фичу если пользователь 
попытается закрыть приложение с помощью Ctrl + C, необходимо запросить подтверждение. При подтверждении выхода через консоль, срабатывает прошлый Scan, который ждёт вариант ответа, т е . Really quit? [y/n] ввожу y - а он принимает это как ответ на прошлый Scan (в котором ожидался ответ на очередной вопрос теста).  Само формирование вопросов опустил для компактности.
package main
import (
	"fmt"
	"strconv"
	//"bufio"
	"os"
	"syscall"
	"os/signal"
	//"runtime"
)
func main() {
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGINT) //os.Interrupt
go func() {
	for {
		select {
		case <-c:
			fmt.Printf("\nReally quit? [y/n] > ")
			var choice string
			fmt.Scan(&choice)
			if choice == "y" {
				os.Exit(0)
			}
		}
	}
}()
        fmt.Println("hello")
		
		var text string
		//k:
		for {
			fmt.Println("What ...?")  
			fmt.Scan(&text)//сканим ответ юзера
			inp, err := strconv.Atoi(text)
			if err != nil {
				fmt.Println(text, "Invalid number for exit!")
				//goto k
			} else {
				fmt.Println(inp)
				os.Exit(0)
			}
		}
}
Также пробовал читать через 
var reader = bufio.NewReader(os.Stdin)
func myScan() string {   
    text, _ := reader.ReadString('\n')
    return text
}
Результат такой же